Какая математика необходима для лунной игры высаживающегося на берег?

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

12
задан LearnCocos2D 12 November 2011 в 16:53
поделиться

6 ответов

Вам понадобится что-то вроде этого:

  1. Newton's законы движения в 2D.
  2. Возможность изменять эффект силы тяжести. 9,8 м / с ^ 2 - правильное ускорение на Земле, но вы должны иметь возможность изменить его на соответствующее значение для Марса, Луны, Юпитера и т. Д.
  3. Возможность включать и выключать двигатели для противодействия влиянию гравитации . Не очень интересная игра, если вы этого не сделаете, потому что все заканчивается вылетом.
  4. Способ связать продолжительность возгорания подруливающего устройства с расходом топлива. Если вы не справитесь с топливом, вы попадете в аварию.
  5. Начальные условия (например, высота над поверхностью, начальная скорость, начальное количество топлива и т. Д.)

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

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

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

Вы будете выполнять пошаговое выполнение по времени, поэтому будет полезно ознакомиться с методами интеграции, такими как явный метод Эйлера или неявный метод Рунге-Кутты 5-го порядка.

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

9
ответ дан 2 December 2019 в 07:20
поделиться

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

6
ответ дан 2 December 2019 в 07:20
поделиться

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

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

alt text

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

4
ответ дан 2 December 2019 в 07:20
поделиться

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

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

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

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

1
ответ дан 2 December 2019 в 07:20
поделиться

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

1
ответ дан 2 December 2019 в 07:20
поделиться

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

0
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: