Ayuda con los vectores de estado cartesiano → Elementos de la órbita kepleriana C#

EDITAR

Actualmente estoy intentando probar la conversión de vectores de estado cartesiano estándar a elementos de órbita kepleriana, pero tengo problemas para comprender las fórmulas y el uso de vectores. Mi premisa para hacer esto es superar los cálculos simples como la velocidad, período que puedo hacer con bastante facilidad. Los recursos que he estado usando son This , This , This y finalmente el libro de texto " Fundamentos de astrodinámica " por Bate, Mueller, White

He calculado a mano y luego replicado en C# como se muestra a continuación. Con algunos valores iniciales aproximados:

v = 7770   y ^   (EM)

r = 6771000   X ^   (metro)

m = 4.0 E+ 14   (m³/s²)

Hasta ahora he logrado usar con éxito las siguientes fórmulas:

H = r × v

METRO = 1 2 v 2 m r

pag = H 2 m

a = m 2 METRO

mi = 1 pag a ,

dónde H es el vector de momento angular, METRO es la energía total (marco inercial), p es el semi-latus rectum, e es la excentricidad y r y v (y r y v ) son los vectores (y magnitudes) de posición y velocidad.

Sin embargo, tengo problemas para tratar de hacer un seguimiento con:

norte ^ = k ^ × h
(como se ve en PG61 del Libro mencionado anteriormente)

Y usando correctamente:

mi = v × h m   r | | r | |

EN el PDF se muestra como:

norte ^ = ( 0 , 0 , 1 ) T × h = ( h y , h X , 0 ) T

No estoy seguro de qué conectar o cómo usar este tipo de fórmulas (o incluso tengo la información)

He incluido parte de mi código C# para que pueda ver mi línea de pensamiento. Progreso.

double V = 7770;
double R = 6771000;
double Mu = 4e+14;

Vector velocity = new Vector(0, V);
Vector Radius = new Vector(R, 0);      

double H = Vector.CrossProduct(Radius, velocity);// Angular Momentum
double M = (Math.Pow(V, 2) / 2) - (Mu / R);//Mechanical Energy
double p = Math.Pow(H, 2) / Mu;// Semi-Latus Recum 

double a = -Mu / (2 * M);//Semi-Major Axis? Comes out only 40km less than 
SLR and no where near the correct SMA.
double test = Vector.Multiply(Radius, velocity);//test dot product.

//double e = Math.Sqrt(1 - p / a);//Eccentricty ? No where near correct 
vaule.
//double e2 = (Math.Pow(V, 2) - Mu / R) * Radius - test * velocity / 
Mu);//Eccentricty ?

He estado jugueteando con el código y el material de lectura durante aproximadamente dos meses y he logrado algunos avances, pero mi falta de experiencia con el cálculo de vectores me está defraudando. Ayuda con ejemplos que puedo aplicar ingeniería inversa u obtener una mejor comprensión de lo que debo hacer para ponerme en marcha.

He agregado el formato MathJax para las ecuaciones que parecen ser las mismas que muestra el bloque de código de C#, sin prestar atención a si son correctas o no. Esto hará que sea más fácil ver lo que está haciendo para aquellos que no "piensan en código".
Esta es una gran edición y es mucho más claro lo que ya sabes y lo que has intentado, y lo que te gustaría hacer a continuación. ¡Bien hecho!
@notovny ha habido una edición de la pregunta; es posible que desee tomar otro crack ahora.
Un problema es que su código usa vectores 2D, lo que solo lo llevará hasta cierto punto en el proceso. Por ejemplo, norte ^ es inherentemente una construcción 3D, ya que apunta al nodo de la órbita.
@Crhis, entonces, si tuviera que usar un Vector3D, ¿sería más adecuado? ¿Qué usaría para K?
@Nzjeux sí, necesitará vectores 3D para la conversión completa. k ^ es solo el eje z si el marco de referencia, por lo que puede usar (0,0,1) como dice el PDF al que se vincula.

Respuestas (1)

Publicaré una respuesta tentativa porque los comentarios no dejan suficiente espacio. Siempre uso la ecuación vis-viva para cosas como esta. Si solo está calculando energías o posición y velocidad en un punto fijo (especialmente los ábsides), es un poco más rápido porque solo usa escalares:

v 2 = m ( 2 r 1 a )

Dale la vuelta para obtener:

a = 1 ( 2 / r v 2 / m )

Con sus valores iniciales, obtengo un valor para a de aproximadamente 6923046 m, que es más grande que su radio inicial, por lo que ha comenzado en el periapsis. Entorno r pag mi r i a 6771000 m y usando mi = 1 r pag mi r i / a Obtengo una excentricidad de alrededor de 0.02196.

Por definición has comenzado en uno de los ábsides, ya que r y v son perpendiculares. La tarea es solo averiguar cuál.

Gracias por la respuesta y perdón por la gran demora. Ya puedo hacer lo que describiste. Estaba más interesado en calcular los elementos orbitales a partir de un vector de posición y velocidad, pero me estoy quedando perplejo sobre cómo aplicar algunas de las fórmulas.
@Nzjeux Ya veo. Preguntar cómo implementar fórmulas en un lenguaje de programación en particular es realmente una pregunta sobre programación y, por lo tanto, empuja el límite de estar en el tema en Space Exploration SE. Todavía no estoy muy seguro de cuál es exactamente tu pregunta. Creo que hay otras respuestas aquí que dan una explicación paso a paso de cómo convertir un vector de estado inicial ( r , v ) a los elementos keplerianos, intentaré buscarlos y usted también debería hacerlo. ¿Puede considerar acortar su pregunta y explicar (en la pregunta) más claramente exactamente cuál sería una respuesta útil?
Edité la pregunta para que se ajuste mejor a lo que estaba preguntando, y también leí un poco más sobre el material. He estado tan ocupado en el trabajo que no he tenido tiempo de entrar en él. También me gustaría darle las gracias por su paciencia.