Моделирование гравитации и столкновений в 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`

Код ниже разъясняет эти уравнения в их контексте.