Библиотека Oimo.js предоставляет мощный физический
движок для работы с трехмерной динамикой тел. Методы
applyForce, applyImpulse и
applyTorque позволяют напрямую воздействовать на объекты,
управляя их движением и вращением. Эти методы относятся к объектам типа
RigidBody и используются для реализации сложной физики,
включая столкновения, ускорения и крутящие моменты.
applyForce(force: Vec3, point?: Vec3)Метод applyForce применяет постоянную силу к телу.
Основные характеристики:
Vec3.Применение силы приводит к изменению ускорения тела по формуле:
[ = ]
где (m) — масса тела. Если точка приложения отличается от центра масс, возникает вращательный момент, влияющий на угловую скорость тела.
Пример использования:
const force = new OIMO.Vec3(0, 10, 0); // сила вверх
const point = new OIMO.Vec3(1, 0, 0); // точка приложения
rigidBody.applyForce(force, point);
Особенности применения:
applyImpulse.applyImpulse(impulse: Vec3, point?: Vec3)Метод applyImpulse мгновенно изменяет скорость тела,
создавая импульсное воздействие. Отличие от applyForce в
том, что импульс учитывает мгновенное изменение скорости без
необходимости постоянного применения.
Мгновенное изменение скорости:
[ = ]
Если точка приложения смещена относительно центра масс, возникает угловое ускорение:
[ += I^{-1} ( )]
где (I^{-1}) — обратная тензорная матрица инерции, () — радиус-вектор от центра масс до точки приложения.
Пример использования:
const impulse = new OIMO.Vec3(5, 0, 0);
rigidBody.applyImpulse(impulse);
Применение импульса идеально подходит для реализации столкновений, ударов или толчков в игре.
applyTorque(torque: Vec3)Метод applyTorque создает крутящий момент на тело,
вызывая изменение угловой скорости без непосредственного изменения
линейной скорости.
Изменение угловой скорости вычисляется через:
[ = I^{-1} ]
где (I^{-1}) — обратная матрица инерции, () — вектор крутящего момента.
Пример использования:
const torque = new OIMO.Vec3(0, 10, 0); // вращение вокруг оси Y
rigidBody.applyTorque(torque);
Особенности применения:
Комбинирование сил и импульсов:
applyForce добавляет постоянное ускорение.applyImpulse изменяет скорость мгновенно.Сила вне центра масс:
force или impulse вне
центра масс автоматически возникает вращение.Torque как альтернативный способ вращения:
applyTorque.applyForce.applyImpulse.applyTorque.Эти методы обеспечивают гибкое управление физикой тел в Oimo.js, позволяя реализовать динамическую и реалистичную симуляцию как линейного, так и углового движения.