De Callao a la Luna; Programación orientada a objetos aplicada al cálculo de trayectorias espaciales (Java). Una aproximación práctica.
Rubén Carrasco
??? CX AI Engineering @ Telefónica | Data Engineer | ?? ML IA Engineer |?? Software Developer |?? Cybersecurity Master | ????Codemotion Community Member |
En este artículo, vamos a explorar cómo implementar las ventajas que nos ofrece la programación orientada a objetos para mejorar la precisión, eficiencia y confiabilidad del cálculo de trayectorias espaciales.
?Qué es la programación orientada a objetos?
La programación orientada a objetos (POO) es un paradigma de programación que se basa en el concepto de "objetos", que son entidades que tienen estado y comportamiento. En la POO, se crean clases que representan a estos objetos y se utilizan para crear instancias.
Ventajas de la utilización de POO en la exploración espacial.
La programación orientada a objetos ofrece varias ventajas en el contexto de la exploración espacial, tales como:
Tipos de trayectorias espaciales.
La trayectoria de tiro se refiere al recorrido que sigue un objeto lanzado desde la superficie de la Tierra hacia el espacio. La trayectoria de tiro es parabólica debido a la acción combinada de la fuerza gravitatoria y la velocidad inicial con la que se lanza el objeto, no siendo necesario realizar ningún tipo de corrección tal y cómo imaginó Julio Verne en "Viaje Alrededor de la Luna".
La trayectoria de transferencia, por otro lado, se refiere al recorrido que sigue un objeto lanzado desde la Tierra con el objetivo de alcanzar un objetivo en el espacio, como un satélite o un planeta. La trayectoria de transferencia puede ser elíptica, parabólica o hiperbólica, dependiendo de la velocidad inicial y el objetivo final.
El concepto de trayectoria de transferencia se remonta a los primeros trabajos de Johannes Kepler (1571-1630), quien formuló las leyes que describen el movimiento de los planetas alrededor del Sol. En sus leyes, Kepler estableció que los planetas se mueven en órbitas elípticas, lo que significa que su distancia al Sol varía a lo largo del tiempo.
Más tarde, en el siglo XVII, el matemático y físico alemán Isaac Newton (1643-1727) en su Philosophi? Naturalis Principia Mathematica, formuló su ley de gravitación universal, que establece que la fuerza gravitatoria entre dos cuerpos es directamente proporcional al producto de sus masas y inversamente proporcional al cuadrado de la distancia entre ellos. Esta ley permitió a Newton calcular el movimiento de los planetas y otros cuerpos celestes con mayor precisión y establecer la relación entre el movimiento orbital y la fuerza gravitatoria.
En resumen, aunque el concepto de trayectoria de transferencia se remonta a Kepler y sus leyes del movimiento orbital, fue Newton quien estableció las bases matemáticas para calcular y predecir el movimiento de los cuerpos celestes con precisión.
Segunda Ley de Newton.
Para calcular la trayectoria de tiro o de transferencia de un objeto, es necesario conocer su posición y velocidad iniciales, así como la aceleración debida a la gravedad y las fuerzas que actúan sobre el objeto. Una vez conocidos estos parámetros, se puede utilizar una ecuación de movimiento (como la segunda ley de Newton) para calcular la trayectoria del objeto en cada instante de tiempo.
Conceptos básicos de mecánica celeste.
Vamos a suponer que la Tierra y la Luna son dos cuerpos estáticos y que están solos en el Universo. En este caso ideal, para viajar a la Luna solamente deberíamos superar la gravedad terrestre y dirigirnos a nuestro satélite. Para escapar del campo gravitatorio de la Tierra es necesario alcanzar una velocidad de unos 11 km/s (40000 km/h), pero obviamente podemos aumentar la velocidad si queremos llegar a antes a nuestro destino.?De todas formas, un error muy común es suponer que necesitamos alcanzar la velocidad de escape para alcanzar la Luna. No es cierto. Basta con situarse en una órbita muy elíptica (con una excentricidad muy alta) en la que el perigeo -el punto de la órbita más cercano a la Tierra- sea de unos 150-400 kilómetros y el apogeo esté situado en la órbita lunar, que se halla a una distancia de?363000-405000 kilómetros.
Lo que pasa es que la órbita de transferencia posee una excentricidad tan alta que es muy fácil convertirla en una órbita hiperbólica -es decir, de escape- con un poco de velocidad extra. De hecho, para situarnos en esta órbita de transferencia suele ser necesario alcanzar unos 10,8 km/s. Como vemos, una velocidad que está muy cerca de la velocidad de escape (o ‘segunda velocidad cósmica’, como dicen los rusos).?En este caso ideal, da igual la inclinación del plano de la órbita de transferencia.
Para alcanzar la Luna de forma directa necesitaremos entonces una órbita elíptica de transferencia, lo que viene siendo una órbita de Hohmann de toda la vida. La órbita de Hohmann de mínima energía tendrá un plano similar al de la órbita de la Luna. Si nuestra nave acelera hasta 10,8 km/s mientras está en órbita baja terrestre, quedará situada en una órbita de transferencia de Hohmann con un apogeo en la órbita lunar (380000 kilómetros).
Cálculo de la órbita de transferencia de un cuerpo en programación orientada a objetos. (POO)
Para calcular la trayectoria de transferencia de un cuerpo en POO, podemos seguir los siguientes pasos:
Cálculo de trayectoria desde Plaza de Callao a Mar de la Tranquilidad en Java.
A continuación se presenta un ejemplo de código en Java que utiliza el tiro de transferencia para calcular la trayectoria óptima para llegar al Mar de la Tranquilidad, en la Luna, desde la plaza Callao de Madrid:
Este código utiliza el tiro de transferencia para calcular la velocidad y el ángulo de lanzamiento necesarios para alcanzar la órbita lunar. Luego, utiliza estos valores para calcular la trayectoria óptima para llegar al Mar de la Tranquilidad. El resultado se imprime en pantalla como una lista de coordenadas (x, y, z) que representan la posición de la nave en cada momento del vuelo.
La extracción arroja 1011 actualizaciones de coordenadas en nuestro hipotético viaje de Callao a Mar de la Tranquilidad.
En el siguiente enlace os dejo el código para que podáis "trastear".
Conclusión
En resumen, hemos visto como la programación orientada a objetos es una herramienta muy útil en el contexto de la exploración espacial debido a su capacidad para modelar precisamente los conceptos del mundo real, reutilizar código, facilitar el mantenimiento y mejorar la comprensión y la colaboración.