diff options
| author | Sébastien Crozet <developer@crozet.re> | 2021-03-03 10:35:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-03 10:35:54 +0100 |
| commit | a8216f5c24b2903ca6798acdd0a40b0a0b6c4b0f (patch) | |
| tree | a9932013897c95b779c240f1636d24476a859863 /src | |
| parent | a74097b4c6708d0108159328169f71e57ab6dd1b (diff) | |
| parent | 1609d93243a74af6666e8b284969faa389f61677 (diff) | |
| download | rapier-a8216f5c24b2903ca6798acdd0a40b0a0b6c4b0f.tar.gz rapier-a8216f5c24b2903ca6798acdd0a40b0a0b6c4b0f.tar.bz2 rapier-a8216f5c24b2903ca6798acdd0a40b0a0b6c4b0f.zip | |
Merge pull request #136 from dimforge/inertia_sqrt
Fix missing sqrt when setting the angular inertia of a RigidBodyBuilder
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynamics/rigid_body.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dynamics/rigid_body.rs b/src/dynamics/rigid_body.rs index 32c0cca..88f4069 100644 --- a/src/dynamics/rigid_body.rs +++ b/src/dynamics/rigid_body.rs @@ -6,6 +6,7 @@ use crate::math::{ AngVector, AngularInertia, Isometry, Point, Real, Rotation, Translation, Vector, }; use crate::utils::{self, WCross, WDot}; +use na::ComplexField; use num::Zero; #[derive(Copy, Clone, Debug, PartialEq, Eq)] @@ -804,7 +805,8 @@ impl RigidBodyBuilder { /// Sets the angular inertia of this rigid-body. #[cfg(feature = "dim2")] pub fn principal_angular_inertia(mut self, inertia: Real) -> Self { - self.mass_properties.inv_principal_inertia_sqrt = utils::inv(inertia); + self.mass_properties.inv_principal_inertia_sqrt = + utils::inv(ComplexField::sqrt(inertia.max(0.0))); self } @@ -829,7 +831,8 @@ impl RigidBodyBuilder { /// attached to this rigid-body. #[cfg(feature = "dim3")] pub fn principal_angular_inertia(mut self, inertia: AngVector<Real>) -> Self { - self.mass_properties.inv_principal_inertia_sqrt = inertia.map(utils::inv); + self.mass_properties.inv_principal_inertia_sqrt = + inertia.map(|e| utils::inv(ComplexField::sqrt(e.max(0.0)))); self } |
