diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-02-23 15:47:24 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-02-23 15:47:24 +0100 |
| commit | 3fdb4cd6d3468733056e886c991bae551a83240d (patch) | |
| tree | 87b0006e6301c42acc1e622e57a123bd8a97ed87 /src/dynamics/solver/velocity_constraint.rs | |
| parent | 4ca32a9546beca788104041134f0afbe96c5e871 (diff) | |
| download | rapier-3fdb4cd6d3468733056e886c991bae551a83240d.tar.gz rapier-3fdb4cd6d3468733056e886c991bae551a83240d.tar.bz2 rapier-3fdb4cd6d3468733056e886c991bae551a83240d.zip | |
Properly take the tangent_velocity into account in the velocity solver.
Diffstat (limited to 'src/dynamics/solver/velocity_constraint.rs')
| -rw-r--r-- | src/dynamics/solver/velocity_constraint.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dynamics/solver/velocity_constraint.rs b/src/dynamics/solver/velocity_constraint.rs index 63139cc..3a751df 100644 --- a/src/dynamics/solver/velocity_constraint.rs +++ b/src/dynamics/solver/velocity_constraint.rs @@ -273,7 +273,8 @@ impl VelocityConstraint { + rb2.effective_inv_mass + gcross1.gdot(gcross1) + gcross2.gdot(gcross2)); - let rhs = (vel1 - vel2).dot(&tangents1[j]); + let rhs = + (vel1 - vel2 + manifold_point.tangent_velocity).dot(&tangents1[j]); #[cfg(feature = "dim2")] let impulse = manifold_point.data.tangent_impulse * warmstart_coeff; #[cfg(feature = "dim3")] @@ -391,7 +392,7 @@ impl VelocityConstraint { active_contact.data.impulse = self.elements[k].normal_part.impulse; #[cfg(feature = "dim2")] { - active_contacts.data.tangent_impulse = self.elements[k].tangent_part[0].impulse; + active_contact.data.tangent_impulse = self.elements[k].tangent_part[0].impulse; } #[cfg(feature = "dim3")] { |
