Войти
ПрограммированиеФорумФизика

Как выставить начальную скорость планеты, для движения по желаемой орбите? (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
22:44, 13 сен. 2021

mr_ix
Если интегрировать положение правильно то небудут. Посмотри уж юниверс сандбокс.


#31
23:50, 13 сен. 2021

samrrr
> Если интегрировать положение правильно то небудут. Посмотри уж юниверс сандбокс.

У тебя исходники для показа имеются с правельным интегрированием?

#32
0:04, 14 сен. 2021

rcsim
> У тебя исходники для показа имеются с правельным интегрированием?
Тебя в гугле забанили? Сложно набрать "численная интеграция"?

#33
8:21, 14 сен. 2021

mr_ix
А если добавить коррекцию ошибок? Мол если планета дальше или ближе, чем надо, то незаметно ее подвигаем

#34
(Правка: 8:26) 8:26, 14 сен. 2021

mr_ix
> Прописать планетам эллиптические орбиты с положением зависящим от t
Можешь дать мне эту формулу положения от t, в зависимости от масс и начального положения?

Как сделать таким образом систему Солнце-Земля-Луна-Юпитер?

#35
10:07, 14 сен. 2021

Robotex
> Можешь дать мне эту формулу положения от t, в зависимости от масс и начального
> положения?
https://github.com/MuMech/MechJeb2
Там наверняка она есть, поищи.

#36
(Правка: 10:20) 10:19, 14 сен. 2021

mr_ix
> Любые попытки считать реально в итоге будут упираться в накапливающиеся ошибки
> и система разлетаться, что бы ты ни делал.

Можно посчитать суммарную энергию и суммарный импульс всей системы в начальный момент времени, а потом, интергрируя по-ньютоновски, корректировать результат на каждом шаге так, чтоб суммарные энергия и импульс всей системы сохранялись.

Правда формулы для корректировки сходу не соображу, но интуитивно - в первую чередь надо корректировать импульс, т.к. он зависит только от вектор-скоростей (это просто, посчитать суммарное отклонение, и пропорционально проекции каждого импульса на вектор отклонения раскидать его по отдельным телам системы).

А потом уже можно подкорректировать и энергию, уже не меняя вектора скоростей, а корректируя только положения тел (при этом суммарный импульс изменяться не будет, т.к. зависит только от скоростей).  Только не соображу, как считать потенциальную энергию при взаимодействии нескольких тел. Надо где-то найти, как считать потенциальную энергию нескольких тел, а не только пары.

#37
10:28, 14 сен. 2021

Dmitry_Milk
> но интуитивно
Не прокатит. С таким поправлением орбиты будут плясать ещё больше.

#38
(Правка: 10:38) 10:37, 14 сен. 2021

samrrr
> С таким поправлением орбиты будут плясать ещё больше

Надо смотреть. Имхо, коррекция энергии и импульса (пропорционально вкладу в ошибку) должны уменьшать ошибку, а не увеличивать.

#39
10:39, 14 сен. 2021

Dmitry_Milk
> должны уменьшать ошибку
Ошибку уменьшит, а вот орбиты начнут плясать.

#40
10:44, 14 сен. 2021

В импульсе только ошибки плавающего питуха, можно переписать так, что сохраняться будет абсолютно точно (хранить импульсы вместо скоростей в фиксированной точке). Для энергии там ошибки численной схемы, так что ее сохранять нереал. Я как-то думал на тему сохраняющей энергию численной схемы, но пришел к выводу, что там без шансов.

#41
(Правка: 11:12) 11:12, 14 сен. 2021

}:+()___ [Smile]
> так что ее сохранять нереал


Эммм, непонятно. Я же не предлагаю сохранять энергию/импульс от-шага-к-шагу. Я предлагаю сравнивать вообще - между самым начальным моментом и текущим шагом. Ведь система закрытая, ее энергия и импульс вообще не меняются.

#42
13:41, 14 сен. 2021

Dmitry_Milk
> Я же не предлагаю сохранять энергию/импульс от-шага-к-шагу.
Обычно сохранять каждый шаг намного проще и беспроблемнее, чем корректировать время от времени.
Например, если у тебя система состоит из двух невзаимодействующих кусков и ошибка набегает только в одном из них, то делая глобальную коррекцию, ты затронешь кусок без ошибки, что будет выглядеть очень странно.
Но, в случае энергии, проблема в том, что способов изменить энергию множество, а правильный из них — только один. Выбирая же способ коррекции неправильно, ты добавишь к системе абсолютно левые перемещения.

#43
14:36, 14 сен. 2021

Robotex

Я же тебе в соседней теме сказал: предрасчитывай орбиты и интерполируй движение.
Тебе нужно получить vector<Vector2>, где каждый элемент - положение планеты, а шаг - соответствует фикс. временному
интервалу. Весь массив составляет период обращения. Зная период - ты получишь функцию от времени (суперстабильную,
хоть на миллионы лет).

Возможно при рассмотрении под микроскопом, такая орбита не будет корректной (всякие прецессии, приливные возмущения) - но ты ведь
вроде делаешь игру, притом весьма аркадную.

Тут конечно много теоретиков, которые "знают" как нужно правильно интегрировать, чтобы всё рассчитывалось рилтайм но на вопрос показать код,
они тебя пошлют "учить физику", ну или в гугл. Где-то два года назад была точно такая-же тема, вплоть до рисования спиралей.

К слову сказать, интегрировать слегка придется (чем больше скорость - тем больше накапливаемая ошибка).

#44
(Правка: 17:37) 17:21, 14 сен. 2021

Robotex
> Хочу собрать солнечную систему, чтобы все красиво летало по круговым орбитам (слегка эллиптическим), однако никак не могу подобрать начальные скорости: то орбиты сильно вытянутые, то все разлетается
Для круговой орбиты скорость должна быть равна v=sqrt(G*M/r) (первая космическая), где M - масса центрального тела, и направленна перпендикулярно радису
> Будут ли в такой системе работать точки лагранжа и гравитационные ускорения или же для них отдельные формулы прописывать надо?
Все будет
Одна проблемка - погрешности float и интегрирования накапливаются, так что не получится замкнутых эллипсов, система постепенно уйдет в разнос, тела упадут друг на друга, либо разлетяться
Частично можно побороть - нормализуя энергию в системе, т.е. постоянно всем телам масштабировать энергию, чтобы СУММА совпала с начальной, замкнутых эллипсов все равно не получится
(надо еще учесть грав потенциалы для всех пар тел)
Можно еще вместо интегрирования по Эйлеру попробовать Рунге-Кутта, оно поточнее
Для двух тел можно сделать аналитически
> Но это скаляр, а как теперь найти направление вектора этой скорости?
Там же должны быть и формулы для вектора
Можно посчитать и из 2го закона Кеплера: тангенциальная скорость (перпендикулярная радиусу) * радиус = const, в апогее и перигее скорость перпендикулярна радиусу, сумма квадратов тангенциальной и радиальной скорости = квадрат скорости

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумФизика