Гравитация в физике циклонов

0

Я создаю 2D-физический движок в c++ на основе Cyclone Physics Engine, http://procyclone.com, и я пытаюсь понять, почему в коде используется вектор силы тяжести, умноженный на массу, чтобы добавить силу к объекту,

void psiclone::Gravity::addForce(Body* body, double seconds) {
    body->addForce(gravity * body->mass);
}

вместо

body->addForce(gravity * seconds);

Конечно, код предоставляет обновление(), включая

velocity.mX += acceleration.getX() * seconds;

но с двумя объектами, выполняемыми гравитацией, не должны ли они оба ударяться о землю одновременно, даже если у них разные массы?

  • 1
    body->addForce(gravity*seconds) физически неверна, вы говорите, что добавляете силу, но вы даете ей скорость.
Теги:

2 ответа

0
Лучший ответ

Спасибо за ответы; При дальнейшем исследовании у меня не было строки в моей функции обновления (циклонная частица :: integrate()), умножая вектор ускорения на тело inverseMass:

acceleration *= inverseMass;
velocity += acceleration * seconds;
position += velocity * seconds;

Это позволило двум телам различной массы одновременно упасть на дно экрана и одновременно ударить.

0

Из физики мы знаем, что force = mass * acceleration. Таким образом, чтобы рассчитать ускорение, они просто делят force по mass. Они просто придерживаются физических определений терминов. gravity * seconds будет velocity.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню