diff options
Diffstat (limited to 'src/dynamics')
8 files changed, 21 insertions, 11 deletions
diff --git a/src/dynamics/joint/joint_set.rs b/src/dynamics/joint/joint_set.rs index a87532a..ed3e69a 100644 --- a/src/dynamics/joint/joint_set.rs +++ b/src/dynamics/joint/joint_set.rs @@ -55,6 +55,11 @@ impl JointSet { self.joint_graph.graph.edges.len() } + /// `true` if there are no joints in this set. + pub fn is_empty(&self) -> bool { + self.joint_graph.graph.edges.is_empty() + } + /// Retrieve the joint graph where edges are joints and nodes are rigid body handles. pub fn joint_graph(&self) -> &InteractionGraph<RigidBodyHandle, Joint> { &self.joint_graph diff --git a/src/dynamics/rigid_body.rs b/src/dynamics/rigid_body.rs index 5fb6183..a70239d 100644 --- a/src/dynamics/rigid_body.rs +++ b/src/dynamics/rigid_body.rs @@ -304,7 +304,7 @@ impl RigidBody { } fn integrate_velocity(&self, dt: Real) -> Isometry<Real> { - let com = &self.position * self.mass_properties.local_com; + let com = self.position * self.mass_properties.local_com; let shift = Translation::from(com.coords); shift * Isometry::new(self.linvel * dt, self.angvel * dt) * shift.inverse() } diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index 36cf4d3..79d5827 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -106,6 +106,11 @@ impl RigidBodySet { self.bodies.len() } + /// `true` if there are no rigid bodies in this set. + pub fn is_empty(&self) -> bool { + self.bodies.is_empty() + } + /// Is the given body handle valid? pub fn contains(&self, handle: RigidBodyHandle) -> bool { self.bodies.contains(handle.0) diff --git a/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint.rs b/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint.rs index d1943fc..a361a37 100644 --- a/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint.rs +++ b/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint.rs @@ -84,7 +84,7 @@ impl PrismaticVelocityConstraint { // .into_inner(); // #[cfg(feature = "dim3")] // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; @@ -380,7 +380,7 @@ impl PrismaticVelocityGroundConstraint { // .into_inner(); // #[cfg(feature = "dim3")] // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; diff --git a/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint_wide.rs b/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint_wide.rs index f24cfa5..77a6fe7 100644 --- a/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint_wide.rs +++ b/src/dynamics/solver/joint_constraint/prismatic_velocity_constraint_wide.rs @@ -124,7 +124,7 @@ impl WPrismaticVelocityConstraint { // .into_inner(); // #[cfg(feature = "dim3")] // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; @@ -483,7 +483,7 @@ impl WPrismaticVelocityGroundConstraint { // .into_inner(); // #[cfg(feature = "dim3")] // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; diff --git a/src/dynamics/solver/joint_constraint/revolute_position_constraint.rs b/src/dynamics/solver/joint_constraint/revolute_position_constraint.rs index 19dd451..afc23f3 100644 --- a/src/dynamics/solver/joint_constraint/revolute_position_constraint.rs +++ b/src/dynamics/solver/joint_constraint/revolute_position_constraint.rs @@ -56,7 +56,7 @@ impl RevolutePositionConstraint { let axis1 = position1 * self.local_axis1; let axis2 = position2 * self.local_axis2; let delta_rot = - Rotation::rotation_between_axis(&axis1, &axis2).unwrap_or(Rotation::identity()); + Rotation::rotation_between_axis(&axis1, &axis2).unwrap_or_else(Rotation::identity); let ang_error = delta_rot.scaled_axis() * params.joint_erp; let ang_impulse = self.ang_inv_lhs.transform_vector(ang_error); @@ -129,7 +129,7 @@ impl RevolutePositionGroundConstraint { let delta_rot = Rotation::scaled_rotation_between_axis(&axis2, &self.axis1, params.joint_erp) - .unwrap_or(Rotation::identity()); + .unwrap_or_else(Rotation::identity); position2.rotation = delta_rot * position2.rotation; let anchor2 = position2 * self.local_anchor2; diff --git a/src/dynamics/solver/joint_constraint/revolute_velocity_constraint.rs b/src/dynamics/solver/joint_constraint/revolute_velocity_constraint.rs index 38f56d9..6270a8e 100644 --- a/src/dynamics/solver/joint_constraint/revolute_velocity_constraint.rs +++ b/src/dynamics/solver/joint_constraint/revolute_velocity_constraint.rs @@ -46,7 +46,7 @@ impl RevoluteVelocityConstraint { ]); // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; @@ -208,7 +208,7 @@ impl RevoluteVelocityGroundConstraint { }; // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = /*r21 * */ basis1; diff --git a/src/dynamics/solver/joint_constraint/revolute_velocity_constraint_wide.rs b/src/dynamics/solver/joint_constraint/revolute_velocity_constraint_wide.rs index 822c2ac..047763d 100644 --- a/src/dynamics/solver/joint_constraint/revolute_velocity_constraint_wide.rs +++ b/src/dynamics/solver/joint_constraint/revolute_velocity_constraint_wide.rs @@ -73,7 +73,7 @@ impl WRevoluteVelocityConstraint { Matrix3x2::from_columns(&[position1 * local_basis1[0], position1 * local_basis1[1]]); // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = r21 * basis1; @@ -290,7 +290,7 @@ impl WRevoluteVelocityGroundConstraint { let anchor2 = position2 * local_anchor2; // let r21 = Rotation::rotation_between_axis(&axis1, &axis2) - // .unwrap_or(Rotation::identity()) + // .unwrap_or_else(Rotation::identity) // .to_rotation_matrix() // .into_inner(); // let basis2 = /*r21 * */ basis1; |
