Подтвердить что ты не робот

Какая математика необходима для игры на лунном аэродроме?

Я хотел бы построить игру, чтобы узнать cocos2d. Lunar lander - это первое упражнение, которое приходит мне в голову. Любой указатель/исходный код/​​учебник необходимых физических вычислений будет оценен. Спасибо!

4b9b3361

Ответ 1

Вам понадобятся такие вещи:

  • Ньютоновские законы движения в 2D.
  • Возможность изменения эффекта силы тяжести. 9.8 м/с ^ 2 - правильное ускорение на земле, но вы должны иметь возможность изменить это на соответствующее значение для Марса, Луны, Юпитера и т.д.
  • Возможность отключать и выключать подруливающие устройства для противодействия эффекту силы тяжести. Не очень интересная игра, если вы этого не сделаете, потому что каждый заканчивается сбой.
  • Способ связать длительность пожара с топливным расходом. Если вы плохо управляете топливом, вы сработали.
  • Исходные условия (например, высота над поверхностью, начальная скорость, исходное топливо и т.д.).

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

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

Вы можете устранить два уравнения, если вы предполагаете, что нет x-компонентов: лунный посадочный аппарат перемещается перпендикулярно поверхности, сила тяги имеет только ненулевую составляющую в вертикальном направлении. Если это правда, вы не имеете трех уравнений.

Вы будете делать время на шаг, так что будет хорошо читать методы интеграции, такие как явный Эйлер или неявный 5-й порядок Runge-Kutta.

Сложная проблема - не тривиальная. Удачи.

Ответ 2

Математика, необходимая для игры на лунном посадке, довольно проста. Newton Laws of Motion - все, что вам действительно нужно - просто подберите основной учебник по физике. Вы должны быть установлены после первой главы. В системе всего два силовых входа - сила тяжести и тяга от двигателей. Просто вычислите вертикальные и горизонтальные компоненты движения и соответствующим образом выполните анимацию вашего космического корабля.

Ответ 3

Физика очень проста: http://csep10.phys.utk.edu/astr161/lect/history/newtongrav.html

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

alt text

Источник: http://en.wikipedia.org/wiki/Trajectory. Вы даже можете уйти с упрощением. Если вы не хотите быть суперточным, вы можете просто сделать что-то вроде F=ma, где есть то, что вы решаете, гравитационное ускорение (9,8 м/с² на Земле).

Ответ 4

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

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

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

Если ваша игра находится в 3D, и ваш корабль имеет боковые подруливающие устройства в дополнение к нижним подруливающим устройствам, то вы не только будете двигаться в местоположении, но и вращаться. Это связано с физикой твердого тела. AFAIK, который включает в себя исчисление уровня колледжа.

Ответ 5

Это может быть излишним, но я рекомендую посмотреть на Numericical Recipes - прочитайте главу об обыкновенных дифференциальных уравнениях. Вам даже не нужно изучать всю главу; только первые пара разделов.

Ответ 6

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