aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/velocity_constraint.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-02-23 15:47:24 +0100
committerCrozet Sébastien <developer@crozet.re>2021-02-23 15:47:24 +0100
commit3fdb4cd6d3468733056e886c991bae551a83240d (patch)
tree87b0006e6301c42acc1e622e57a123bd8a97ed87 /src/dynamics/solver/velocity_constraint.rs
parent4ca32a9546beca788104041134f0afbe96c5e871 (diff)
downloadrapier-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.rs5
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")]
{