Cómo rotar la elipse orbital cuando se agrega la velocidad radial a la velocidad orbital

Estoy tratando de trazar una órbita y estoy teniendo cierto éxito. He calculado directamente los parámetros orbitales para poder trazar la elipse. También estoy trazando un camino de la órbita como control de cordura. La elipse de los parámetros orbitales es roja y el control de cordura es blanco.

Cuando solo aplico una velocidad tangencial tal que vp.x=0, las cosas coinciden exactamente.

foto 1

Sin embargo, cuando agrego algo de velocidad radial, de modo que vp.x>0tengo un pequeño problema. Gira correctamente con el "Argumento de Periapsis" y mantiene la misma forma, pero necesito cambiar la elipse para que coincida con lo que debería obtener en blanco.

foto 2

¿Alguien puede aconsejarme cómo calcular el cambio x e y requerido para que la elipse roja coincida con la blanca?

Estoy utilizando el código que se muestra en la siguiente pregunta y respuesta para calcular los parámetros orbitales y poder trazar la elipse orbital (en rojo).

¿Cómo calcular el tiempo de apoapsis y periapsis, dados los elementos orbitales?

¿Cómo calcular programáticamente elementos orbitales usando vectores de posición/velocidad?

Gracias.

Solo por curiosidad: ¿las imágenes mostradas provienen de su propio código o de un programa independiente o un sitio web? Si es público, ¡un enlace sería útil! No puedo decir qué significa realmente aquí "la velocidad radial se agrega a la velocidad orbital", porque la adición está ocurriendo dentro de un programa. Parece que se calcula la órbita y luego se agrega otra velocidad a la solución, como si los dos cuerpos simplemente estuvieran a la deriva juntos en el espacio.
Hola, pensé que sería mejor vincular el código al final de mi pregunta en lugar de compartir el mío, el mío está un poco desordenado. Si miras el primer enlace que compartí, la velocidad de la que estaba hablando es "Vector3 vel2 = planet.velocity;". La primera imagen que he compartido solo incluye un componente Y y la segunda imagen incluye un componente X e Y para la velocidad inicial. Puede ver esto en vp en el control dat.gui en la imagen. La adición es probablemente la palabra incorrecta, es solo una velocidad inicial diferente. ¿Eso aclara un poco las cosas?
¡Ah, claro! Debería haberlo notado. Voy a hacer algunas modificaciones pequeñas a su pregunta para ayudar a señalarlo para otros como yo que pueden haber leído demasiado rápido. Si hace clic en el ícono "editado", siempre puede seleccionar "retroceder" si no le gusta o si desea hacerlo de manera diferente.
Avanzar. Soy muy nuevo en todo esto así que te lo agradecería!

Respuestas (1)

En realidad, una solución bastante simple. El "Argumento de Periapsis" gira la elipse alrededor del primario (sol). Como el sol está en un foco de la elipse, todo lo que necesita es un poco de trigonometría para calcular el cambio del centro de la elipse.

Imagen 3.1

var scale = 10000000;
var rotation = this.ω;

var y = -Math.sin(rotation)*this.x0/scale;
var x = this.x0/scale-Math.abs(Math.cos(rotation)*this.x0/scale);

De hecho, había intentado esto antes, pero estaba pensando incorrectamente que estaba girando alrededor del cuerpo en órbita, así que en lugar de usar x0 estaba usando a.

Como puede ver en la imagen de abajo, todavía no es perfecto. Parece que tengo demasiada energía al calcular el semieje mayor para la elipse en rojo.

//Semi-Major Axis
var a = 1 / ((2 / math.norm(r)) - (Math.pow(math.norm(v), 2) / µ));

Imagen 3.2

Actualizar.

Encontré esta hoja de cálculo que también hace el cálculo.

Usé esto para tratar de averiguar dónde estaba el error. Usando los datos de entrada que usé anteriormente, m1, m2, v, r lo estaba rompiendo, así que intenté usar los datos de entrada utilizados en la hoja de cálculo. Esto parece haber funcionado, así que asumo que mis datos de entrada fueron el problema.

Este formulario solo me permitirá publicar 2 enlaces debido a mi reputación, así que publicaré los demás para esta actualización como un comentario. ¡Hecho!

¡Con suerte, algunas personas más votarán su pregunta y respuesta y lo enviarán a obtener más representantes!

Imagen 3.3