Моделирование гравитации и столкновений в C#
ОГЛАВЛЕНИЕ
Данная статья показывает, как моделировать движение объекта в среде с поддержкой гравитации и столкновений.
• Скачать демоверсию - 13 KB
• Скачать исходники - 15.6 KB
Введение
Моделирование движения объекта в среде реального времени с эффектами гравитации и столкновений на простых языках программирования является сложной задачей; ее выполнение требует хорошего понимания использования таймеров и иногда управления потоками, поэтому существуют разные инструменты моделирования для этой и иных подобных задач.
В данной статье показан метод моделирования движения трех шаров в среде с поддержкой гравитации с использованием таймера и основных уравнений движения и столкновений. Вы увидите, как шары сталкиваются друг с другом и отражаются от стены, и сможете управлять их движением путем изменения ряда переменных движения.
Движение этих шаров управляется в системах гравитации и столкновений с использованием основных уравнений движения Ньютона и уравнений столкновения. Координаты трех шаров обновляются каждые 20мс с помощью таймера, также делающего снимок этого движения.
Объяснение
Прежде чем разбирать код, надо рассмотреть основные уравнения гравитации и столкновения.
Теоретический расчет:
Уравнения гравитации и движения:
Уравнение координаты:
X = Xi + Vx * tx
• Xi: - исходная координата объекта.
• Vx: - постоянная скорость при игнорировании трения и сопротивления воздуха, не учитываемых при моделировании. Воздух считается постоянным сопротивлением, которое должно учитываться по периодам, поэтому движения делится на разные периоды, и вычисляется новая координата для каждого периода.
• tx: - время.
Третье уравнение движения:
Y = Y0 + Vy * ty – 0.5 * g * t^2
• g: ускорение свободного падения.
Уравнения скорости:
Vy = Vy0 – g*t
• Vy: конечная скорость Y.
• Vy0: начальная скорость Y.
• g: ускорение свободного падения.
Vx = 0.99*Vx0
• Vx0: старая скорость X.
• Vx: новая скорость X после учета сопротивления воздуха.
• 0.99: - постоянный коэффициент, обозначающий сопротивление воздуха.
Столкновение и сохраненный импульс:
Столкновение: взаимодействие между двумя или более телами, каждое воздействует на другие очень сильно в течение очень малого промежутка времени, тела могут даже не соприкасаться!!!
+ Комментарии:
• Два тела могут двигаться в противоположных направлениях.
• Два тела могут двигаться в одинаковом направлении.
• Одно движется, в то время как другое неподвижно.
• Сила в момент столкновения между двумя телами может быть представлена, как показано на графике ниже:
• Если два или больше тел сталкиваются, то сумма их импульсов до столкновения равна сумме их импульсов после столкновения.
Формула:
V1?m1 + V2?m2 = V1`?m1 + V2`?m2
При условии одинаковой массы:
V1 + V2 = V1` + V2`
Код ниже разъясняет эти уравнения в их контексте.