@Filipp42

Как написать симулятор посадки на Луну?

Здравствуйте!
Тут как раз запускают станцию Луна-25, я решил к моменту посадки написать игру-симулятор, целью которой является успешная посадка Луны-25. Для начала, консольный вариант, подобный тому, что был на калькуляторе Электроника МК-52. Потом графический (в 2D). Вот основные вопросы:
1) Как рассчитывать движение, работу двигателя и так далее?
2) Как зафиксировать коллизию объектов (Луны и станции)?
3) Как процедурно сгенерировать реалистичную поверхность Луны?
Заранее спасибо!
  • Вопрос задан
  • 645 просмотров
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka
Токсичный шарпист
1) Как рассчитывать движение, работу двигателя и так далее?
2) Как зафиксировать коллизию объектов (Луны и станции)?

Проще всего - взять уже готовую физическую библиотеку, которая и коллизии считает и импульс.

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

Для расчёта коллизий есть разные алгоритмы - тут тебе следует погуглить. Они собственно строятся на том, что у тебя есть какая-то модель формы объекта и векторы скоростей.
3) Как процедурно сгенерировать реалистичную поверхность Луны?

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

https://en.wikipedia.org/wiki/Lunar_Lander_(video_...
Ответ написан
Griboks
@Griboks
1) Обычная школьная физика. Из внешних сил - только гравитация, из внутренних - двигатели.
2) При соприкосновении с поверхностью (см. пункт 3) проверяете ориентацию лунохода. Если она хоть немного отклонилась от вертикали - луноход разбился. Затем проверяете скорость. Если она слишком большая - луноход разбился.
3) Реалистичная поверхность - это просто горизонтальная линия. Место для посадки специально выбирают ровным, поэтому можно грубо смоделировать прямой линией.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Как рассчитывать движение, работу двигателя и так далее?

Это - вопрос на мильон. Я думаю что если здесь собрать ракето-конструкторов - все они не сойдутся
на единой формуле расчета. Каждое конструкторское бюро конструирует их опираясь на свой
опыт. И мне кажется что там главной движущей силой расчета были ограничения чем формулы.
Например какое топливо? Как горит? Как долго горит? Насколько его хватит? Когда отделять
первую ступень? Да тут даже нет формулы. Бесконечно большое число испытаний. Наблюдения.
Привязка к ограничениям.

По игре-симулятору.

Чтоб полет был реалистичным - надо ХОТЯ-БЫ соблюсти все реальные физические свойства этого полета. Расстояния. Массы земли и луны. Скорость ракеты. Ускорение ракеты. Влияние атмосферы земли.

Это кажется пустяк но если ты хочешь делать симулятор то надо сделать его так чтоб полет хотя-бы не длился 30 секунд. Это уж будет слишком "не по лунному сценарию".

Как процедурно сгенерировать реалистичную поверхность Луны?

Ну после такого курса физики аэрокосмоса, генерация текстуры будет пустяком. Луна
состоит из кратеров. И все что мы видим с земли - это резкие тени от них. Создай
пустую поверхность. Сделай случайных кратеров по вкусу. И сделай резкие боковые тени.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы