Почему отключение мировой гравитации не влияет на перемещение твердого тела?

#bulletphysics #ammo.js

#bulletphysics #ammo.js

Вопрос:

Я создаю песочницу для игр и тестирования ammo.js (порт javascript для Bullet physic engine версии v2.82). Я думаю, этот вопрос должен относиться как к боеприпасам, так и к пуле.

Я начинаю свою сцену с падающей сферы, а мировая гравитация установлена на (0, -9,8, 0). Прежде чем сфера коснется земли, я отключаю мировую гравитацию:

physicsWorld.setGravity(new ammo.btVector3(0, 0, 0));

Я ожидаю, что сфера «заморозит» свое движение, поскольку гравитация больше не должна применяться, но сфера все еще падает и падает на землю. Мне интересно, почему.

Ответ №1:

Это из-за инерции. Первый закон Ньютона гласит, что если силы, приложенные к объекту, равны нулю (случай вашей сферы после изменения силы тяжести), ускорение равно нулю. Но это не означает, что скорость равна нулю. В вашем случае скорость останется постоянной. Другой способ убедить вас — второй закон Ньютона, который, вероятно, закодирован в ammo.js:

ma = F

a — ускорение, m — масса, F — сумма внешних сил.

Допустим, что a = (v_{t 1} — v_t) / dt. При F = 0 вы получите v_{t 1} = v_t, постоянную скорость.

v — скорость, dt — шаг по времени.