У меня есть эти данные для некоторых орбит без каких-либо объяснений значения каждого элемента данных:
{
"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"
}
Я пытаюсь построить их в 3D в этом JSFiddle , но я действую случайным образом.... кто-нибудь может помочь?
Конечный результат должен быть похож на тот, который виден на странице, где используются эти данные (и на этой странице на английском языке ), но я хочу представить его в 3D.
Допустимые значения для библиотеки spacekit :
initialValues.a Большая полуось
InitialValues.e Эксцентриситет
InitialValues.i Наклон
initialValues.epoch Эпоха в JD
initialValues.period Период в днях
initialValues.ma Средняя аномалия
initialValues.n Среднее движение
initialValues.L Средняя долгота
initialValues.om Долгота восходящего узла
initialValues.w Аргумент перигелия
initialValues.wBar Долгота перигелия
Хорошо для incl , peri и node , я могу предположить для «a» (initialValues.a — большая полуось), «e» (initialValues.e — эксцентриситет), но как насчет «q» и «peri»?
initialValues.a Большая полуось ---> "a"
InitialValues.e Эксцентриситет ---> "e"
InitialValues.i Наклон ---> "incl"
initialValues.epoch Эпоха в JD ---> "T"
initialValues.period Период в днях --->?
initialValues.ma Средняя аномалия --->?
initialValues.n Среднее движение --->?
initialValues.L Средняя долгота --->?
initialValues.om Долгота восходящего узла ---> "узел"
initialValues.w Аргумент перигелия ---> "peri"?
initialValues.wBar Долгота перигелия ---> "peri"?
Я также получил данные NASA Horizons for Earth, чтобы сравнить их с доступными, но я все равно не могу понять, чему соответствуют «q» и «peri»:
Работа в процессе, будут новые цифры.
Я взял данные об орбите Хаябусы-2, чтобы нарисовать пурпурный эллипс. Я использовал ось initialValues.a Semimajor и initialValues.e Excentricity . Две красные точки — фокусы эллипса.
Синяя точка — это единственное положение Hayabusa2, которое мы получили, только x и y были использованы.
Солнце находится в центре x = 0 и y = 0, конечно, там тоже есть одна точка фокусировки.
Затем я повернул эллипс на угол node": 253,856900249799 , чтобы получить зеленый угол. Единственное положение Хаябусы (синяя точка) теперь находится на повернутом эллипсе, а не на пурпурном эллипсе.
Я добавил оси, линии пурпурного цвета — это оси эллипса (тоже пурпурного), выровненные по системе координат. Зеленые линии — это повернутые оси, принадлежащие зеленому эллипсу. Маркеры «x» пурпурного цвета — это фокусы невращающегося эллипса. Маркер x в начале координат также является одним из фокусов зеленого повернутого эллипса. Черная дуга показывает угол узла. Я добавил некоторые аннотации.
На следующем шаге эта 2D-плоскость должна быть вставлена в 3D-график. Солнце должно быть в центре 2D и 3D графика. Hayabusa2 должен находиться в заданной позиции xyz. " incl": 0,0038067895470298, наклон относительно плоскости XY, i (градусы) тоже должны быть правильными.
Но нам нужно 3 точки, чтобы определить правильную ориентацию плоскости. Мы можем посмотреть, можно ли использовать орбиту Земли для получения дополнительной информации. Но у нас должно быть время, когда и Земля, и Хаябуса находятся в одном месте. Само по себе пересечение земной орбиты не поможет, когда Земля находится далеко от той точки, где находится Хаябуса. Два небольших тела также должны быть близки к орбите Хаябусы.
3D-график, включающий приведенный выше 2D-график.
Вам нужно немного узнать о многих способах представления данных об орбитах, начиная с базового руководства, такого как https://en.wikipedia.org/wiki/Orbital_elements .
Одна из важных вещей, которую следует иметь в виду, состоит в том, что из этого набора может быть не более шести независимых чисел, но не все шесть могут быть выбраны. Если вы введете слишком много значений, все пойдет не так, потому что они не будут согласовываться друг с другом. Например, если у вас есть большая полуось и эксцентриситет , то по определению расстояние перицентра равно а расстояние в апоапсисе равно , поэтому укажите не более двух из этих четырех, иначе вы создадите проблемы. Точно так же среднее движение, период и большая полуось дублируют друг друга, если вы знаете, вокруг какого тела вращается (поскольку преобразование включает его массу). Истинная аномалия, средняя аномалия и время, прошедшее с момента прохождения перигея, или другая эталонная эпоха — это еще один набор, из которого вы должны выбрать не более одного в качестве входных данных.
Традиционный порядок элементов кеплеровской орбиты - большая полуось. , эксцентриситет , наклон , прямое восхождение восходящего узла (RAAN) , аргумент перицентра , и истинная аномалия . Имейте в виду, что некоторые из этих определений не работают, если другие принимают определенные значения. Например, если наклон точно равен нулю, то нет восходящего узла, поэтому он не имеет , но это по-прежнему однозначно определяет плоскость орбиты. Точно так же, если эксцентриситет точно равен нулю, перицентр отсутствует (все точки находятся на одинаковом расстоянии от центра, потому что эллипс с это круг), поэтому вам нужно определить скорее, чем сказать, с чего начать измерения .
Похоже, что ответа на этот вопрос не существует: имеющихся данных недостаточно для построения трехмерной орбиты. Хотя на первый взгляд существует 6 орбитальных элементов, на самом деле их всего 5; действительно предоставлены эти три данных:
- "e": 0.187058473659886
- "a": 1.19403253275367
- "q": 0.970678629676518
Но:
periapsis distance = a * ( 1 - e) = 1.19403253275367 * (1 - 0.187058473659886 )
= 0,970678629676520
Итак, на самом деле у нас есть только 5 элементов орбиты:
- "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
Их недостаточно для построения трехмерной орбиты; исходная страница, использующая эти данные, отображает орбиты только в формате 2d; путем обратного проектирования исходного кода мы видим, что параметр «q» вообще не используется:
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
Передача всего 5 параметров в библиотеку spacekit.js приводит к ошибке:
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`
Уве
прыгун
прыгун