Tengo estos datos para algunas órbitas, sin ninguna explicación sobre el significado de cada dato:
{
"objects": [
{
"name": "Earth",
"id": "solar.planet.earth",
"elements": {
"q": 0.98322073104899
"a": 0.99920537923658
"node": 207.00538100359,
"e": 0.0159973600220234
"peri": 256.950444448438,
"incl": 0.0038067895470298
"T": 2459218.90577274
},
"position": {
"y": 0.9297659392321,
"z": -4.515675204152e-05,
"x": 0.3275590103186
}
},
{
"position": {
"z": 0.06029318307615,
"x": -0.4584994822692,
"y": 1.094698818492
},
"elements": {
"q": 0.806176191073582,
"a": 1.0323483836211,
"node": 75.5720068963318,
"e": 0.219085142318127,
"incl": 4.80809622578363,
"peri": 179.397909345983,
"T": 2459318.63483092
},
"id": "solar.minorplanet.98943",
"name": "2001 CC21"
},
{
"name": "1998 KY26",
"id": "solar.minorplanet.1998KY26",
"elements": {
"T": 2459001.17727408,
"incl": 1.48102189788285,
"peri": 209.372033608463,
"e": 0.201828518064676,
"node": 84.3664587661475,
"a": 1.23285180453922,
"q": 0.984027151835704
},
"position": {
"y": 1.407810076987,
"z": -0.002082322485705,
"x": 0.2198001273522
}
},
{
"name": "Hayabusa 2",
"id": "solar.spacecraft.hayabusa2",
"elements": {
"T": 2459212.01173911,
"incl": 5.99763881195244,
"peri": 205.214139025915,
"e": 0.187058473659886,
"node": 253.856900249799,
"q": 0.970678629676518,
"a": 1.19403253275367
},
"position": {
"z": 0.006301058519122,
"x": 0.3323137692169,
"y": 0.932379875888
}
}
],
"TT": 2459186.10708546,
"UTC": "2020-12-02T14:33:03"
}
Estoy tratando de trazarlos en 3D en este JSFiddle , pero estoy procediendo al azar... ¿alguien puede ayudarme?
El resultado final debería ser algo como el que se ve en la página que usa estos datos (y en esta página en inglés ), pero quiero representarlo en 3d.
Los valores aceptados para la biblioteca spacekit son:
initialValues.a Eje semimayor
initialValues.e Excentricidad
initialValues.i Inclinación
initialValues.epoch Época en JD
initialValues.period Periodo en días
initialValues.ma Anomalía media
initialValues.n Movimiento medio
initialValues.L Longitud media
initialValues.om Longitud del nodo ascendente
initialValues.w Argumento del perihelio
initialValues.wBar Longitud del perihelio
Ok para incl , peri y node , puedo adivinar "a" ( initialValues.a - Semimajor axis ), "e" (initialValues.e - Excentricidad), pero ¿qué pasa con "q" y "peri"?
valoresIniciales.a Eje semimayor ---> "a"
initialValues.e Excentricidad ---> "e"
initialValues.i Inclinación ---> "incl"
initialValues.epoch Época en JD ---> "T"
initialValues.period Periodo en días --->?
initialValues.ma Anomalía media --->?
initialValues.n Movimiento medio --->?
initialValues.L Longitud media --->?
initialValues.om Longitud del nodo ascendente ---> "nodo"
initialValues.w Argumento de Perihelio ---> "peri"?
initialValues.wBar Longitud del perihelio ---> "peri"?
También recuperé datos de NASA Horizons for Earth para compararlos con los disponibles, pero de todos modos no puedo averiguar con qué coinciden "q" y "peri":
Trabajo en progreso, seguirán nuevas cifras.
Tomé los datos de la órbita de Hayabusa2 y pudimos trazar la elipse magenta. Usé initialValues.a Semimajor axis y initialValues.e Eccentricity . Los dos puntos rojos son los focos de la elipse.
El punto azul es la única posición de Hayabusa2 que obtuvimos, solo se usaron x e y.
El sol está en el centro x = 0 y y = 0, por supuesto, también hay un punto de enfoque.
Luego giré la elipse por el ángulo "node": 253.856900249799 para obtener el ángulo verde. La única posición de Hayabusa (punto azul) ahora está en la elipse rotada pero no en la elipse magenta.
Agregué los ejes, las líneas en magenta son los ejes de la elipse (magenta también) alineados al sistema de coordenadas. Las líneas verdes son los ejes rotados pertenecientes a la elipse verde. Los marcadores 'x' en magenta son los focos de la elipse sin rotar. El marcador x en el origen también es un foco de la elipse rotada verde. El arco negro muestra el ángulo del nodo. Agregué algunas anotaciones.
En el siguiente paso, este plano 2D debe insertarse en el gráfico 3D. El Sol debe estar en el centro para gráficos 2D y 3D. Hayabusa2 debe estar en la posición xyz dada. El "incl": 0.0038067895470298, Inclination wrt XY plane, i (grados) también debería ser correcto.
Pero necesitamos 3 puntos para definir la orientación correcta del plano. Podemos ver si la órbita de la Tierra se puede usar para obtener información adicional. Pero deberíamos tener un tiempo en el que tanto la Tierra como Hayabusa estén en el mismo lugar. Cruzar la órbita de la Tierra por sí solo no ayudaría cuando la Tierra está muy lejos de ese punto cuando Hayabusa está allí. Los dos pequeños cuerpos también deberían estar cerca de la órbita de Hayabusa.
El gráfico 3D para incluir el gráfico 2D anterior.
Debe aprender un poco sobre las muchas formas en que se pueden representar los datos de la órbita, comenzando con un tutorial básico como https://en.wikipedia.org/wiki/Orbital_elements
Una de las cosas importantes a tener en cuenta es que no hay más de seis números independientes de ese conjunto, pero no se pueden elegir seis cualquiera. Si ingresa valores para demasiados, las cosas saldrán mal porque no serán consistentes entre sí. Por ejemplo, si tiene semi-eje mayor y excentricidad , entonces, por definición, la distancia del periapsis es y la distancia apoapsis es , así que especifique no más de dos de esos cuatro o invitará a problemas. De manera similar, el movimiento medio, el período y el semieje mayor son redundantes entre sí, suponiendo que sepa qué cuerpo está en órbita (porque la conversión involucra su masa). La anomalía verdadera, la anomalía media y el tiempo transcurrido desde el paso del perigeo u otra época de referencia son otro conjunto del que debe elegir como máximo uno como entrada.
El orden tradicional de los elementos orbitales keplerianos es semi-eje mayor , excentricidad , inclinación , ascensión recta del nodo ascendente (RAAN) , argumento del periapsis , y verdadera anomalía . Tenga en cuenta que algunas de estas definiciones se rompen si algunas de las otras toman ciertos valores. Por ejemplo, si la inclinación es exactamente cero, entonces no hay un nodo ascendente por lo que no tiene un , pero eso aún especifica el plano de la órbita de forma única. De manera similar, si la excentricidad es exactamente cero, entonces no hay periapsis (todos los puntos están a la misma distancia del centro, porque la elipse con es un círculo), por lo que necesita definir en vez de decir por dónde empezar a medir .
Parece que no hay una respuesta posible a esta pregunta: los datos disponibles no son suficientes para trazar una órbita en 3D. Aunque aparentemente hay 6 elementos orbitales, en realidad son solo 5; de hecho se proporcionan estos tres datos:
- "e": 0.187058473659886
- "a": 1.19403253275367
- "q": 0.970678629676518
Pero:
periapsis distance = a * ( 1 - e) = 1.19403253275367 * (1 - 0.187058473659886 )
= 0,970678629676520
Entonces, de hecho, solo tenemos 5 elementos orbitales:
- "incl": 5.99763881195244,
- "peri": 205.214139025915,
- "e": 0.187058473659886,
- "node": 253.856900249799,
- ("q": 0.970678629676518,) <<<====== can be calculated from a and e
- "a": 1.19403253275367
No son suficientes para trazar una órbita en 3D; la página original que usa estos datos solo traza órbitas en 2d; Al invertir la ingeniería del código fuente, podemos ver que el parámetro "q" no se usa en absoluto:
key: "calcEllipse",
value: function calcEllipse(object) {
////// "a" and "e"//////
var cx = -factor * object.elements.a * object.elements.e;
var cy = 0;
var rx = factor * object.elements.a;
var ry = factor * object.elements.a * Math.sqrt(1 - Math.pow(object.elements.e, 2));
////// "node", "incl" and "peri" //////
var transform = "\n rotate(".concat(-1.0 * object.elements.node, ")\n
scale(1.0, ").concat(Math.cos(object.elements.incl / 180 * Math.PI), ")\n
rotate(").concat(-1.0 * object.elements.peri, ")");
return {
cx: cx,
cy: cy,
rx: rx,
ry: ry,
transform: transform
Pasar solo 5 parámetros a la biblioteca spacekit.js da como resultado un error:
NaN position value - you may have bad or incomplete data in the following ephemeris:`
a: 0.937550412197935,
e: 0.140879661549663,
i: 0.0748349916816544,
om: 1.2865260962475196,
w: 2.0673222342313817`
uwe
saltador
saltador