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

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

Страницы: 1 2 3 4 5 6 Следующая »
#0
(Правка: 16:22) 16:21, 11 сен. 2021

Есть куча объектов: Солнце, Планеты, астероиды всякие и т.п.

Все это действует друг на друга с силой F = G * m1 * m2 / R^2. Каждый объект действует на каждый, кроме себя.

Хочу собрать солнечную систему, чтобы все красиво летало по круговым орбитам (слегка эллиптическим), однако никак не могу подобрать начальные скорости: то орбиты сильно вытянутые, то все разлетается (луна от Земли постоянно улетает).

Как можно посчитать скорость в заданной точке, которую можно выставить телам, чтобы дальше они уже продолжили ее изменять физикой, двигаясь по красивым орбитам?

Будут ли в такой системе работать точки лагранжа и гравитационные ускорения или же для них отдельные формулы прописывать надо?


#1
17:59, 11 сен. 2021

Кажись нашел формулу:

V = sqrt(G * (M + m) / distance)

и направить перпендикулярно направлению на больший объект.

Тогда планета движется по идеальной круговой орбите.


А как можно сделать для эллиптической? Чтобы можно было задавать ее параметры

#2
18:46, 11 сен. 2021

Скорости (скаляры) считаю так:

    double smjReciprocal = 1.0 / semiMajorAxis;
    speedAtPeriapsis = sqrt( _centralBody->orbit.mu * ( (2.0 / periapsisDistance) - smjReciprocal ) );
    speedAtApoapsis = sqrt( _centralBody->orbit.mu * ( (2.0 / apoapsisDistance) - smjReciprocal ) );
    // (where μ = GM)
#3
18:47, 11 сен. 2021

Robotex
> А как можно сделать для эллиптической?
https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF%D1%8… 8%D1%82%D0%B0

#4
20:58, 11 сен. 2021

Заметил в этой системе одну неприятную особенность.

Если объект стоит на месте, то можно спокойно нарезать вокруг него орбиты. Но если он быстро движется, то он начинает убегать от объектов на орбите. И если объект достаточно массивный, то он их утянет за собой. А если нет, то объекты будут выброшены с орбит, т.к. гравитационная сила быстро остабеет, а скорости не успеют уменьшиться.

Так и должно быть или я что-то забыл учесть? Почему луна от земли не улетает? Земля же движется вокруг солнца

#5
21:27, 11 сен. 2021

Robotex
> А если нет, то объекты будут выброшены с орбит, т.к. гравитационная сила быстро
> остабеет, а скорости не успеют уменьшиться.
Ты вообще вкурсе реальных размеров(и что важнее масс) луны, земли, солнца?
И ты вкурсе что при постановке луны надо прибавить скорость планеты?

> Почему луна от земли не улетает?
Гравитационное воздействие солнца в пределах орбиты луны различается менее чем на 1 процент.

#6
21:44, 11 сен. 2021

Robotex
> Хочу собрать солнечную систему, чтобы все красиво летало по круговым орбитам
> (слегка эллиптическим), однако никак не могу подобрать начальные скорости: то
> орбиты сильно вытянутые, то все разлетается (луна от Земли постоянно улетает).

никто не рассчитывает движение планет в солнечной системе через это
> Все это действует друг на друга с силой F = G * m1 * m2 / R^2. Каждый объект
> действует на каждый, кроме себя.

есть уравнение Кеплера, параметры для которого можно взять из википедии для реальных планет или придумать самому.

#7
21:59, 11 сен. 2021

Robotex
> Если объект стоит на месте, то можно спокойно нарезать вокруг него орбиты. Но
> если он быстро движется, то он начинает убегать от объектов на орбите. И если
> объект достаточно массивный, то он их утянет за собой. А если нет, то объекты
> будут выброшены с орбит, т.к. гравитационная сила быстро остабеет, а скорости
> не успеют уменьшиться.

я же тебя предупреждал об этом:
https://gamedev.ru/code/forum/?id=263641&m=5445777#m10

Robotex
> Хочу собрать солнечную систему, чтобы все красиво летало по круговым орбитам
> (слегка эллиптическим), однако никак не могу подобрать начальные скорости: то
> орбиты сильно вытянутые, то все разлетается (луна от Земли постоянно улетает).
Зачем ты подбираешь параметры того что итак изучено, подсчитано и работает? У нас огромная разнообразная  система. с готовыми параметрами.

#8
22:48, 11 сен. 2021

Ren
Ты представляешь размеры этой системы? Кому нужна игра, где перелёты между планетами занимают по полгода реального времени?

#9
22:54, 11 сен. 2021

samrrr
> И ты вкурсе что при постановке луны надо прибавить скорость планеты?
Я прибавляю скорость планеты. Я сейчас говорю не о луне, а о корабле. Факт в том, что вокруг стоячей планеты можно крутиться по орбите, а вот если она движется, то на той же орбите планета улетает от корабля (либо же сама орбита вытягивается и становится эллиптической).

Возможно, это связано с тем, что на корабль по честному действуют силы, а скорость планеты выставляется по формуле скорости

#10
22:55, 11 сен. 2021

Robotex
> Ты представляешь размеры этой системы?
Конечно представляю, как бы я тоже делаю игру с реальными параметрами.

> Кому нужна игра, где перелёты между планетами занимают по полгода реального
> времени?
А ты что, пытаешься сделать маленькую реальную звездную систему на 300 километров? ))))

Тебе не рассказывали про ускорение движение времени?

#11
23:05, 11 сен. 2021

Ren
> А ты что, пытаешься сделать маленькую реальную звездную систему на 300
> километров? ))))
Да. И получается весьма весело. Не сильно достоверно, но полёты на корабле доставляют удовольствие. Единственная проблема, что у меня сложности со стыковкой на орбите. Никак не могу удержаться с другим объектом там. Вот и пытаюсь понять почему.

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

#12
0:16, 12 сен. 2021

BingoBongo
> никто не рассчитывает движение планет в солнечной системе через это
Рассчитывают. Как минимум в 1 игре.

Robotex
> а вот если она движется, то на той же орбите планета улетает от корабля
Ну так ищи баги, даже при малом различии соотношении масс звезды/планеты 1 к 100 и расстояния орбит планеты/корабля 1 к 10 таких эффектов быть недолжно.

Robotex
> Надо разобраться как оно работает
Ты забыл формулу силы гравитации? Берёшь да применяешь её ко всем парам объектов.

#13
7:15, 12 сен. 2021

BingoBongo
> никто не рассчитывает движение планет в солнечной системе через это
Реальные астрономы считают именно так (точнее, еще с поправками Эйнштейна).

Robotex
> Единственная проблема, что у меня сложности со стыковкой на орбите. Никак не могу удержаться с другим объектом там. Вот и пытаюсь понять почему.
Приливные силы. В реальной стыковке именно так: выдают импульс на сближение совсем в, казалось бы, левом направлении, чтобы через пол оборота оказаться там где надо.

> Мне не солнечная система нужна, а процедурная генерация этого дела. Просто скопировать не выйдет. Надо разобраться как оно работает
Без шансов, это хаотическая система. Я тоже об этом думал, только мне была нужна всего одна система, время генерации было не особо важно. Единственное, к чему я пришел — это случайная генерация систем и потом долгая симуляция того, что с ними происходит. Если система получается более-менее стабильной — значит берем ее, если нет, то пробуем заново.

#14
8:09, 12 сен. 2021

samrrr
> Ты забыл формулу силы гравитации? Берёшь да применяешь её ко всем парам
> объектов
Так и сделано

}:+()___ [Smile]
> В реальной стыковке именно так: выдают импульс на сближение совсем в, казалось
> бы, левом направлении, чтобы через пол оборота оказаться там где надо.
Ну а как они оказываются двумя кораблями на одной орбите, а затем маневровыми движками замедляют первый, чтобы второй плавно к нему приблизился? Такое валидно только несколько секунд и если не состыкуешься, то они разлетятся по разным орбитам?

}:+()___ [Smile]
> Без шансов, это хаотическая система
Я изначально сделал так, что только на корабль по честному действуют силы, а планеты чисто по формулам движутся, учитывая только гравитацию родительского тела. Так не выйдет, да?

samrrr
> соотношении масс звезды/планеты 1 к 100 и расстояния орбит планеты/корабля 1 к
> 10
1 к 10 это как? На 1 диаметр планеты нужно 10 диаметров между ними?

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