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.
Sin embargo, cuando agrego algo de velocidad radial, de modo que vp.x>0
tengo 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.
¿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.
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.
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) / µ));
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!
UH oh
viciosokinid
UH oh
viciosokinid