aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2021-03-03 10:35:54 +0100
committerGitHub <noreply@github.com>2021-03-03 10:35:54 +0100
commita8216f5c24b2903ca6798acdd0a40b0a0b6c4b0f (patch)
treea9932013897c95b779c240f1636d24476a859863 /src
parenta74097b4c6708d0108159328169f71e57ab6dd1b (diff)
parent1609d93243a74af6666e8b284969faa389f61677 (diff)
downloadrapier-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.rs7
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
}