#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 — шаг по времени.