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

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

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

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

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


person Eturcim    schedule 21.01.2021    source источник


Ответы (1)


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

ma = F

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

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

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

person AlexB    schedule 22.01.2021