feat: add RigidBody::predict_position_using_velocity

Fix #601
This commit is contained in:
Sébastien Crozet
2024-03-23 10:51:50 +01:00
committed by Sébastien Crozet
parent f943fd9973
commit 6886f8f207
2 changed files with 16 additions and 0 deletions

View File

@@ -5,6 +5,11 @@
- Fix crash when simulating a spring joint between two dynamic bodies. - Fix crash when simulating a spring joint between two dynamic bodies.
- Fix kinematic bodies not being affected by gravity after being switched back to dynamic. - Fix kinematic bodies not being affected by gravity after being switched back to dynamic.
### Added
- Add `RigidBody::predict_position_using_velocity` to predict the next position of the rigid-body
based only on its current velocity.
## v0.18.0 (24 Jan. 2024) ## v0.18.0 (24 Jan. 2024)
The main highlight of this release is the implementation of a new non-linear constraints solver for better stability The main highlight of this release is the implementation of a new non-linear constraints solver for better stability

View File

@@ -817,6 +817,17 @@ impl RigidBody {
.integrate_forces_and_velocities(dt, &self.forces, &self.vels, &self.mprops) .integrate_forces_and_velocities(dt, &self.forces, &self.vels, &self.mprops)
} }
/// Predicts the next position of this rigid-body, by integrating only its velocity
/// by a time of `dt`.
///
/// The forces that were applied to this rigid-body since the last physics step will
/// be ignored by this function. Use [`Self::predict_position_using_velocity_and_forces`]
/// instead to take forces into account.
pub fn predict_position_using_velocity(&self, dt: Real) -> Isometry<Real> {
self.vels
.integrate(dt, &self.pos.position, &self.mprops.local_mprops.local_com)
}
pub(crate) fn update_world_mass_properties(&mut self) { pub(crate) fn update_world_mass_properties(&mut self) {
self.mprops.update_world_mass_properties(&self.pos.position); self.mprops.update_world_mass_properties(&self.pos.position);
} }