A A A A Автор Тема: Эксцентриситет  (Прочитано 970 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн newerow1989Автор темы

  • Новичок
  • *
  • Сообщений: 11
  • Благодарностей: 0
    • Сообщения от newerow1989
Эксцентриситет
« : 20 Июн 2023 [06:40:09] »
Здравствуйте!

У меня вопрос состоит в следующем.

Я разработал программу (см. вложение), которая позволяет делать анимацию: движение планеты вокруг Солнца.

НО! У меня получился парадокс:
если сделать эксцентриситет, равным единице, у меня получается отрезок, но в теории должна быть парабола.

Вопрос такой:
Как сделать движение планеты по параболе при e = 1.00?
Может формулы другие нужны?
Как будет двигаться планета, если эксцентриситет орбиты будет стремиться к единице, например, от 0.90 до 0.99?

На всякий случай выкладываю код программы, может в программе что-то поменять, чтобы планета двигалась по параболе.
(программа разработана в Delphi, язык Паскаль)
Мой сайт: http://newerow1989.ru

Оффлайн Ulmo

  • *****
  • Сообщений: 2 151
  • Благодарностей: 75
    • Сообщения от Ulmo
Re: Эксцентриситет
« Ответ #1 : 20 Июн 2023 [10:47:19] »
Алгоритм рисования эллипса не умеет рисовать параболу или гиперболу, он рассчитан только на эллипс. Это видно из расчета координат: y:=a*Sqrt(1-e*e)*Sin(i/180*pi); тут большая полуось умножается на ноль, что и дает прямую.

Оффлайн AlAn 3/4+

  • Модератор
  • *****
  • Сообщений: 12 716
  • Благодарностей: 500
  • Александр
    • Сообщения от AlAn 3/4+
Re: Эксцентриситет
« Ответ #2 : 20 Июн 2023 [10:51:54] »
Алгоритм рисования эллипса не умеет рисовать параболу или гиперболу, он рассчитан только на эллипс. Это видно из расчета координат: y:=a*Sqrt(1-e*e)*Sin(i/180*pi); тут большая полуось умножается на ноль, что и дает прямую.

Значит надо ставить условие, если эксцентриситет = 1, то расчёт по формуле параболы, иначе формула эллипса. Кстати, эксцентриситет может быть и больше единицы, тогда траектория -- гипербола.
Осталось 379 символов

Оффлайн newerow1989Автор темы

  • Новичок
  • *
  • Сообщений: 11
  • Благодарностей: 0
    • Сообщения от newerow1989
Re: Эксцентриситет
« Ответ #3 : 20 Июн 2023 [11:00:06] »
Спасибо за ответ!
Мой сайт: http://newerow1989.ru

Оффлайн Toth

  • *****
  • Сообщений: 2 963
  • Благодарностей: 217
    • Сообщения от Toth
Re: Эксцентриситет
« Ответ #4 : 20 Июн 2023 [19:16:27] »
У параболы для расчета истинной аномалии v и радиус-вектора  r используют среднюю аномалию M и расст. перицентра q ( а не большую полуось a, которая у параболы не имеет смысла).
И второе - ср. аномалию нельзя приводить к интервалу 0 .. 360 гр ( 0 .. 2пи) . Если она получилась при расчете 400, так и использовать, а не 400-360 = 40 , как можно бы было у эллипса.
Итераций, как в формуле Кеплера не требуется, решается через корень кубического уравнения.
Вот как я делал. Правда, на практике редко пользовался, на практике эксцентриситет либо чуть больше 1, либо чуть меньше. Разве что в качестве приближения.
procedure keTrueAnomRadVectParab(q,M:Extended;var v,r:Extended);  //  M, v - радианы
var S,x,si,co,S2:Extended;
begin
 x:=Power(12*M+4*Sqrt(9*M*M+4),1/3)/2;
 S:=x-1/x;
 S2:=S*S;
 co:=(1-S2)/(1+S2);
 si:=2*S/(1+S2);
 v:=ArcTan2(si,co);
 r:=2*q/(1+Cos(v));
end;
Расчет среднего движения n для параболы
function QtoMeanMotionParabol(q,k:Extended):Extended;
begin
 Result:=k/(Sqrt(2*q)*q);
end;
k постоянная Гаусса. Если единицы - а.е., масса Солнца, сутки, то k =  0,017209895 рад/сутки.
Если в системе СИ, то k = корень из GM Солнца.
Средняя аномалия = среднее движение * время от перигелия.
« Последнее редактирование: 20 Июн 2023 [19:30:27] от Toth »
Canon PowerShot SX130 IS

Оффлайн newerow1989Автор темы

  • Новичок
  • *
  • Сообщений: 11
  • Благодарностей: 0
    • Сообщения от newerow1989
Re: Эксцентриситет
« Ответ #5 : 23 Июн 2023 [03:38:59] »
Toth, спасибо за помощь!
Мой сайт: http://newerow1989.ru