Телескопы покупают здесь


A A A A Автор Тема: как считать dV между астероидами?  (Прочитано 531 раз)

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

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

  • Новичок
  • *
  • Сообщений: 3
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от PHWizard
Доброго времени суток, сообщество!

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

Возможно кто-нибудь знает какое-то готовое open-source решение?

Что мы уже сделали - изучили отрытый проект Asterank. Он красиво показывает астероиды и их движение по орбитам: http://www.youtube.com/watch?v=ekcFVnZC30w&t=501s
пообщались с автором проекта, Ian Webster, он подсказал, что расчеты dV происходят здесь:
https://github.com/typpo/asterank/blob/master/data/pipeline/run/00_deltav/deltav.py
и также что расчеты делаются на основе публикации Shoemaker and Helin (1978)

однако это нам не совсем подходит, т.к. dV рассчитывается относительно Земли, а нам нужно каждый раз рассчитывать относительно перемещения с одного астероида на другой.

Есть также открытые API от JPL которые дают координаты и эфемериды всех малых тел солнечной системы, но к сожалению только на текущий момент.

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

Оффлайн Geen

  • *****
  • Сообщений: 12 210
  • Благодарностей: 200
  • Мне нравится этот форум!
    • Сообщения от Geen
Re: как считать dV между астероидами?
« Ответ #1 : 31 Июл 2018 [23:16:28] »
Я тут опять посоветую Orbiter (и сопроводительные материалы к нему)...  ;D
Если у тебя есть фонтан, заткни его, дай отдохнуть и фонтану.

А ещё мы любим обсуждать вкус устриц с теми кто их ел...

Оффлайн Klapaucius

  • *****
  • Сообщений: 11 266
  • Благодарностей: 185
  • Илья
    • Сообщения от Klapaucius
Re: как считать dV между астероидами?
« Ответ #2 : 01 Авг 2018 [01:17:35] »
Я тут опять посоветую Orbiter (и сопроводительные материалы к нему)...  ;D
Kerbal Space Program  тоже в этом смысле хороша. Единственно, чтобы dV знать а не на глазок прикидывать (хотя там на глазок интереснее, долетишь ли без расчётов туда-обратно, или нет), нужны моды (mechjeb).
« Последнее редактирование: 01 Авг 2018 [01:24:30] от Klapaucius »
Carthago restituenda est

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: как считать dV между астероидами?
« Ответ #3 : 01 Авг 2018 [08:14:18] »
Насколько я понял, посмотрев указанный исходник, там реализованы формулы, приведённые, например, в параграфе 18 Постоянной части Астрономического календаря.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн I.A.R.

  • *****
  • Сообщений: 7 696
  • Благодарностей: 205
  • Звездочет - это не профессия, это состояние души
    • Сообщения от I.A.R.
Re: как считать dV между астероидами?
« Ответ #4 : 01 Авг 2018 [10:24:29] »
Вот, еще это почитайте. Там расчет потребной массы топлива для старта корабля с Луны при заданной полезной нагрузке. Все необходимые формулы имеются...

Оффлайн Geen

  • *****
  • Сообщений: 12 210
  • Благодарностей: 200
  • Мне нравится этот форум!
    • Сообщения от Geen
Re: как считать dV между астероидами?
« Ответ #5 : 01 Авг 2018 [11:38:50] »
Kerbal Space Program  тоже в этом смысле хороша.
Нет -  там не решается задача многих тел (по крайней мере так было) - а это очень большая погрешность.
Если у тебя есть фонтан, заткни его, дай отдохнуть и фонтану.

А ещё мы любим обсуждать вкус устриц с теми кто их ел...

Оффлайн Klapaucius

  • *****
  • Сообщений: 11 266
  • Благодарностей: 185
  • Илья
    • Сообщения от Klapaucius
Re: как считать dV между астероидами?
« Ответ #6 : 02 Авг 2018 [00:13:01] »
Kerbal Space Program  тоже в этом смысле хороша.
Нет -  там не решается задача многих тел (по крайней мере так было) - а это очень большая погрешность.
Не погрешность, а упрощение. Там каждое крупное тело (звезда, планеты, все луны) обладает собственной гравитацией, с чёткой границей (за которой не влияет, совсем). Все мелкие тела (астероиды, корабли) - пробные, обладая массой гравитации не имеют. Для игры самое то. Хотя конечно некоторые специфические эффекты, в нашей реальности реализующиеся совсем по-другому, из-за этого имеют место быть. Но довольно простительные.

p.s. То есть вот если поместить в точке либрации между планетой и спутником станцию. Равновесие будет шатким, в реальности она быстро, за годы наверное, уйдёт без постоянных коррекций. Что в KSP? Там это граница между телами,  станция будет спокойно вращаться вокруг спутника, либо вокруг планеты (в зависимости от того куда её поместить, хоть на метр отклонение), а не оставаться в этой точке. Это важно для игры? Полагаю нет. Хотя если будут такие игры, где будет реализована задача многих тел на таком уровне, а ещё если и релятивистские эффекты в полной мере (с расчётами визуальных эффектов из-за ограниченности скорости света), то я только за.
« Последнее редактирование: 02 Авг 2018 [00:26:26] от Klapaucius »
Carthago restituenda est

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

  • Новичок
  • *
  • Сообщений: 3
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от PHWizard
Re: как считать dV между астероидами?
« Ответ #7 : 02 Авг 2018 [10:57:22] »
Друзья, спасибо всем за ответы.
Не совсем понял насчет отсылок к Orbiter и KSP, нам ведь нужен или готовый код или хотя бы формулы-таблицы. Из KSP нужно еще придумать как вытащить их код и не нарушит ли это их авторских прав.

Проблемы тут пожалуй две:

1) Cмоделировать локально на своём сервере движение астероидов или малых тел Солнечной Системы.
Так как это делает Asterank в их приложении, но возможно придется ускорить время и показывать не относительно реальной календарной даты, а с ускорением в 10,000 раз например, чтобы картинка по ближайшим астероидам менялась быстрее и игрокам было интереснее и было больше выбора. Как, знаете, в играх бывает что за одну минуту проходит игровой день или год.
Поэтому нужно эту всю модель построить и из неё уже потом брать координаты и относительные скорости.
Все тела необязательно, можно например штук 50-100 ближайших околоземных астероидов, начать с чего-то попроще.

2) Имея (1) уже можно довольно просто считать расстояние, или (чуть сложнее) dV для перемещения между астероидами.
Тут задача будет когда игрок сидит на одном из них своим "кораблем", показать игроку ближайших кандидатов, куда можно перепрыгнуть наиболее эффективно с точки зрения затрат dV.


Вот, еще это почитайте. Там расчет потребной массы топлива для старта корабля с Луны при заданной полезной нагрузке. Все необходимые формулы имеются...

Тут наверное должна быть ссылка?

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

  • Новичок
  • *
  • Сообщений: 3
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от PHWizard
Re: как считать dV между астероидами?
« Ответ #8 : 02 Авг 2018 [11:09:59] »
и да, нам очень точно не нужно считать, можно на уровне two-body, то есть не решать задачу многих тел
лишь бы механика была приближена к реальной

вот например JPL Small-Body Database Browser показывает примерно то, что нужно, взять например Ceres:

у нас видимо есть 2 варианта
(1) захардкодить все возможные координаты с шагом на 1 месяц вперед в базу и считать потом по базе
(2) прописать упрощенные формулы движения для каждого тела и моделировать на лету

https://ssd.jpl.nasa.gov/sbdb.cgi?sstr=ceres;old=0;orb=1;cov=0;log=0;cad=0#orb



Оффлайн Geen

  • *****
  • Сообщений: 12 210
  • Благодарностей: 200
  • Мне нравится этот форум!
    • Сообщения от Geen
Re: как считать dV между астероидами?
« Ответ #9 : 02 Авг 2018 [12:13:05] »
Не совсем понял насчет отсылок к Orbiter и KSP
Описываемая Вами программа уже есть (в двух вариантах, как минимум). В сопроводительных материалах к ним есть все формулы и подробные пояснения.

Имея (1) уже можно довольно просто считать расстояние
Зачем?
Вы хоть что-нибудь по орбитальным манёврам читали?
Если у тебя есть фонтан, заткни его, дай отдохнуть и фонтану.

А ещё мы любим обсуждать вкус устриц с теми кто их ел...

Оффлайн I.A.R.

  • *****
  • Сообщений: 7 696
  • Благодарностей: 205
  • Звездочет - это не профессия, это состояние души
    • Сообщения от I.A.R.
Re: как считать dV между астероидами?
« Ответ #10 : 02 Авг 2018 [17:08:17] »
Вот, еще это почитайте. Там расчет потребной массы топлива для старта корабля с Луны при заданной полезной нагрузке. Все необходимые формулы имеются...
Тут наверное должна быть ссылка?
Привожу. Книжка называется В.И. Левантовский "Механика космического полета в элементарном изложении". Формулы взяты из главы 1, параграфа 1 -- "Законы ракетного движения". На сайте начало параграфа на стр.10:
http://booksshare.net/index.php?id1=4&category=physics&author=levantovskiy-vi&book=1980&page=10

Полезна также книжка М. Фертрегт, "Основы космонавтики". Так же есть в сети...
« Последнее редактирование: 02 Авг 2018 [17:13:47] от I.A.R. »