aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/contact_constraint
diff options
context:
space:
mode:
authorSébastien Crozet <sebcrozet@dimforge.com>2024-01-27 16:49:53 +0100
committerSébastien Crozet <sebastien@crozet.re>2024-01-27 17:13:08 +0100
commitda92e5c2837b27433286cf0dd9d887fd44dda254 (patch)
tree00428ce290288f5c64e53dee13d88ffdde4df0ca /src/dynamics/solver/contact_constraint
parentaef873f20e7a1ee66b9d4c066884fa794048587b (diff)
downloadrapier-da92e5c2837b27433286cf0dd9d887fd44dda254.tar.gz
rapier-da92e5c2837b27433286cf0dd9d887fd44dda254.tar.bz2
rapier-da92e5c2837b27433286cf0dd9d887fd44dda254.zip
Fix clippy and enable clippy on CI
Diffstat (limited to 'src/dynamics/solver/contact_constraint')
-rw-r--r--src/dynamics/solver/contact_constraint/contact_constraints_set.rs16
-rw-r--r--src/dynamics/solver/contact_constraint/generic_one_body_constraint.rs4
-rw-r--r--src/dynamics/solver/contact_constraint/generic_two_body_constraint.rs12
-rw-r--r--src/dynamics/solver/contact_constraint/generic_two_body_constraint_element.rs20
-rw-r--r--src/dynamics/solver/contact_constraint/one_body_constraint.rs6
-rw-r--r--src/dynamics/solver/contact_constraint/one_body_constraint_element.rs4
-rw-r--r--src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs12
-rw-r--r--src/dynamics/solver/contact_constraint/two_body_constraint.rs8
-rw-r--r--src/dynamics/solver/contact_constraint/two_body_constraint_element.rs4
-rw-r--r--src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs24
10 files changed, 49 insertions, 61 deletions
diff --git a/src/dynamics/solver/contact_constraint/contact_constraints_set.rs b/src/dynamics/solver/contact_constraint/contact_constraints_set.rs
index 4d02270..b5fdb6d 100644
--- a/src/dynamics/solver/contact_constraint/contact_constraints_set.rs
+++ b/src/dynamics/solver/contact_constraint/contact_constraints_set.rs
@@ -192,7 +192,7 @@ impl ContactConstraintsSet {
.interaction_groups
.simd_interactions
.chunks_exact(SIMD_WIDTH)
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[i[0]]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[i[0]]).num_constraints)
.sum();
unsafe {
@@ -211,7 +211,7 @@ impl ContactConstraintsSet {
.chunks_exact(SIMD_WIDTH)
{
let num_to_add =
- ConstraintsCounts::from_contacts(&manifolds_all[manifolds_i[0]]).num_constraints;
+ ConstraintsCounts::from_contacts(manifolds_all[manifolds_i[0]]).num_constraints;
let manifold_id = gather![|ii| manifolds_i[ii]];
let manifolds = gather![|ii| &*manifolds_all[manifolds_i[ii]]];
@@ -238,7 +238,7 @@ impl ContactConstraintsSet {
.interaction_groups
.nongrouped_interactions
.iter()
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[*i]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[*i]).num_constraints)
.sum();
unsafe {
@@ -278,7 +278,7 @@ impl ContactConstraintsSet {
let total_num_constraints = self
.generic_two_body_interactions
.iter()
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[*i]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[*i]).num_constraints)
.sum();
self.generic_velocity_constraints_builder.resize(
@@ -321,7 +321,7 @@ impl ContactConstraintsSet {
let total_num_constraints = self
.generic_one_body_interactions
.iter()
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[*i]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[*i]).num_constraints)
.sum();
self.generic_velocity_one_body_constraints_builder.resize(
total_num_constraints,
@@ -362,7 +362,7 @@ impl ContactConstraintsSet {
.one_body_interaction_groups
.simd_interactions
.chunks_exact(SIMD_WIDTH)
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[i[0]]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[i[0]]).num_constraints)
.sum();
unsafe {
@@ -384,7 +384,7 @@ impl ContactConstraintsSet {
.chunks_exact(SIMD_WIDTH)
{
let num_to_add =
- ConstraintsCounts::from_contacts(&manifolds_all[manifolds_i[0]]).num_constraints;
+ ConstraintsCounts::from_contacts(manifolds_all[manifolds_i[0]]).num_constraints;
let manifold_id = gather![|ii| manifolds_i[ii]];
let manifolds = gather![|ii| &*manifolds_all[manifolds_i[ii]]];
SimdOneBodyConstraintBuilder::generate(
@@ -408,7 +408,7 @@ impl ContactConstraintsSet {
.one_body_interaction_groups
.nongrouped_interactions
.iter()
- .map(|i| ConstraintsCounts::from_contacts(&manifolds_all[*i]).num_constraints)
+ .map(|i| ConstraintsCounts::from_contacts(manifolds_all[*i]).num_constraints)
.sum();
unsafe {
diff --git a/src/dynamics/solver/contact_constraint/generic_one_body_constraint.rs b/src/dynamics/solver/contact_constraint/generic_one_body_constraint.rs
index 7c39eab..7b1f8ea 100644
--- a/src/dynamics/solver/contact_constraint/generic_one_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/generic_one_body_constraint.rs
@@ -59,7 +59,7 @@ impl GenericOneBodyConstraintBuilder {
let rb1 = handle1
.map(|h| SolverBody::from(&bodies[h]))
- .unwrap_or_else(SolverBody::default);
+ .unwrap_or_default();
let rb2 = &bodies[handle2.unwrap()];
let (vels2, mprops2) = (&rb2.vels, &rb2.mprops);
@@ -265,7 +265,7 @@ impl GenericOneBodyConstraint {
solve_restitution: bool,
solve_friction: bool,
) {
- let solver_vel2 = self.inner.solver_vel2 as usize;
+ let solver_vel2 = self.inner.solver_vel2;
let elements = &mut self.inner.elements[..self.inner.num_contacts as usize];
OneBodyConstraintElement::generic_solve_group(
diff --git a/src/dynamics/solver/contact_constraint/generic_two_body_constraint.rs b/src/dynamics/solver/contact_constraint/generic_two_body_constraint.rs
index a4924fe..073f585 100644
--- a/src/dynamics/solver/contact_constraint/generic_two_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/generic_two_body_constraint.rs
@@ -382,15 +382,15 @@ impl GenericTwoBodyConstraint {
solve_friction: bool,
) {
let mut solver_vel1 = if self.generic_constraint_mask & 0b01 == 0 {
- GenericRhs::SolverVel(solver_vels[self.inner.solver_vel1 as usize])
+ GenericRhs::SolverVel(solver_vels[self.inner.solver_vel1])
} else {
- GenericRhs::GenericId(self.inner.solver_vel1 as usize)
+ GenericRhs::GenericId(self.inner.solver_vel1)
};
let mut solver_vel2 = if self.generic_constraint_mask & 0b10 == 0 {
- GenericRhs::SolverVel(solver_vels[self.inner.solver_vel2 as usize])
+ GenericRhs::SolverVel(solver_vels[self.inner.solver_vel2])
} else {
- GenericRhs::GenericId(self.inner.solver_vel2 as usize)
+ GenericRhs::GenericId(self.inner.solver_vel2)
};
let elements = &mut self.inner.elements[..self.inner.num_contacts as usize];
@@ -415,11 +415,11 @@ impl GenericTwoBodyConstraint {
);
if let GenericRhs::SolverVel(solver_vel1) = solver_vel1 {
- solver_vels[self.inner.solver_vel1 as usize] = solver_vel1;
+ solver_vels[self.inner.solver_vel1] = solver_vel1;
}
if let GenericRhs::SolverVel(solver_vel2) = solver_vel2 {
- solver_vels[self.inner.solver_vel2 as usize] = solver_vel2;
+ solver_vels[self.inner.solver_vel2] = solver_vel2;
}
}
diff --git a/src/dynamics/solver/contact_constraint/generic_two_body_constraint_element.rs b/src/dynamics/solver/contact_constraint/generic_two_body_constraint_element.rs
index f3bd3a0..40740a0 100644
--- a/src/dynamics/solver/contact_constraint/generic_two_body_constraint_element.rs
+++ b/src/dynamics/solver/contact_constraint/generic_two_body_constraint_element.rs
@@ -114,7 +114,7 @@ impl TwoBodyConstraintTangentPart<Real> {
j_id1,
ndofs1,
jacobians,
- &tangents1[0],
+ tangents1[0],
&self.gcross1[0],
solver_vels,
) + solver_vel2.dvel(
@@ -135,7 +135,7 @@ impl TwoBodyConstraintTangentPart<Real> {
ndofs1,
dlambda,
jacobians,
- &tangents1[0],
+ tangents1[0],
&self.gcross1[0],
solver_vels,
im1,
@@ -158,7 +158,7 @@ impl TwoBodyConstraintTangentPart<Real> {
j_id1,
ndofs1,
jacobians,
- &tangents1[0],
+ tangents1[0],
&self.gcross1[0],
solver_vels,
) + solver_vel2.dvel(
@@ -173,7 +173,7 @@ impl TwoBodyConstraintTangentPart<Real> {
j_id1 + j_step,
ndofs1,
jacobians,
- &tangents1[1],
+ tangents1[1],
&self.gcross1[1],
solver_vels,
) + solver_vel2.dvel(
@@ -199,7 +199,7 @@ impl TwoBodyConstraintTangentPart<Real> {
ndofs1,
dlambda[0],
jacobians,
- &tangents1[0],
+ tangents1[0],
&self.gcross1[0],
solver_vels,
im1,
@@ -209,7 +209,7 @@ impl TwoBodyConstraintTangentPart<Real> {
ndofs1,
dlambda[1],
jacobians,
- &tangents1[1],
+ tangents1[1],
&self.gcross1[1],
solver_vels,
im1,
@@ -258,7 +258,7 @@ impl TwoBodyConstraintNormalPart<Real> {
let j_id1 = j_id1(j_id, ndofs1, ndofs2);
let j_id2 = j_id2(j_id, ndofs1, ndofs2);
- let dvel = solver_vel1.dvel(j_id1, ndofs1, jacobians, &dir1, &self.gcross1, solver_vels)
+ let dvel = solver_vel1.dvel(j_id1, ndofs1, jacobians, dir1, &self.gcross1, solver_vels)
+ solver_vel2.dvel(j_id2, ndofs2, jacobians, &-dir1, &self.gcross2, solver_vels)
+ self.rhs;
@@ -271,7 +271,7 @@ impl TwoBodyConstraintNormalPart<Real> {
ndofs1,
dlambda,
jacobians,
- &dir1,
+ dir1,
&self.gcross1,
solver_vels,
im1,
@@ -323,7 +323,7 @@ impl TwoBodyConstraintElement<Real> {
cfm_factor,
nrm_j_id,
jacobians,
- &dir1,
+ dir1,
im1,
im2,
ndofs1,
@@ -339,7 +339,7 @@ impl TwoBodyConstraintElement<Real> {
// Solve friction.
if solve_friction {
#[cfg(feature = "dim3")]
- let tangents1 = [tangent1, &dir1.cross(&tangent1)];
+ let tangents1 = [tangent1, &dir1.cross(tangent1)];
#[cfg(feature = "dim2")]
let tangents1 = [&dir1.orthonormal_vector()];
let mut tng_j_id = tangent_j_id(j_id, ndofs1, ndofs2);
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint.rs b/src/dynamics/solver/contact_constraint/one_body_constraint.rs
index 57931cd..be108a4 100644
--- a/src/dynamics/solver/contact_constraint/one_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/one_body_constraint.rs
@@ -76,7 +76,7 @@ impl OneBodyConstraintBuilder {
let rb1 = handle1
.map(|h| SolverBody::from(&bodies[h]))
- .unwrap_or_else(SolverBody::default);
+ .unwrap_or_default();
let rb2 = &bodies[handle2.unwrap()];
let vels2 = &rb2.vels;
@@ -334,7 +334,7 @@ impl OneBodyConstraint {
solve_normal: bool,
solve_friction: bool,
) {
- let mut solver_vel2 = solver_vels[self.solver_vel2 as usize];
+ let mut solver_vel2 = solver_vels[self.solver_vel2];
OneBodyConstraintElement::solve_group(
self.cfm_factor,
@@ -349,7 +349,7 @@ impl OneBodyConstraint {
solve_friction,
);
- solver_vels[self.solver_vel2 as usize] = solver_vel2;
+ solver_vels[self.solver_vel2] = solver_vel2;
}
// FIXME: duplicated code. This is exactly the same as in the two-body velocity constraint.
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint_element.rs b/src/dynamics/solver/contact_constraint/one_body_constraint_element.rs
index c5c0944..d9ff7f4 100644
--- a/src/dynamics/solver/contact_constraint/one_body_constraint_element.rs
+++ b/src/dynamics/solver/contact_constraint/one_body_constraint_element.rs
@@ -204,7 +204,7 @@ impl<N: SimdRealCopy> OneBodyConstraintElement<N> {
AngVector<N>: SimdDot<AngVector<N>, Result = N>,
{
#[cfg(feature = "dim3")]
- let tangents1 = [tangent1, &dir1.cross(&tangent1)];
+ let tangents1 = [tangent1, &dir1.cross(tangent1)];
#[cfg(feature = "dim2")]
let tangents1 = [&dir1.orthonormal_vector()];
@@ -213,7 +213,7 @@ impl<N: SimdRealCopy> OneBodyConstraintElement<N> {
for element in elements.iter_mut() {
element
.normal_part
- .solve(cfm_factor, &dir1, im2, solver_vel2);
+ .solve(cfm_factor, dir1, im2, solver_vel2);
let limit = limit * element.normal_part.impulse;
let part = &mut element.tangent_part;
part.apply_limit(tangents1, im2, limit, solver_vel2);
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs b/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
index 33e0d77..cd2ea56 100644
--- a/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
+++ b/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs
@@ -308,12 +308,8 @@ impl OneBodyConstraintSimd {
solve_friction: bool,
) {
let mut solver_vel2 = SolverVel {
- linear: Vector::from(gather![
- |ii| solver_vels[self.solver_vel2[ii] as usize].linear
- ]),
- angular: AngVector::from(gather![
- |ii| solver_vels[self.solver_vel2[ii] as usize].angular
- ]),
+ linear: Vector::from(gather![|ii| solver_vels[self.solver_vel2[ii]].linear]),
+ angular: AngVector::from(gather![|ii| solver_vels[self.solver_vel2[ii]].angular]),
};
OneBodyConstraintElement::solve_group(
@@ -330,8 +326,8 @@ impl OneBodyConstraintSimd {
);
for ii in 0..SIMD_WIDTH {
- solver_vels[self.solver_vel2[ii] as usize].linear = solver_vel2.linear.extract(ii);
- solver_vels[self.solver_vel2[ii] as usize].angular = solver_vel2.angular.extract(ii);
+ solver_vels[self.solver_vel2[ii]].linear = solver_vel2.linear.extract(ii);
+ solver_vels[self.solver_vel2[ii]].angular = solver_vel2.angular.extract(ii);
}
}
diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint.rs b/src/dynamics/solver/contact_constraint/two_body_constraint.rs
index 9b552ca..0a0ebd6 100644
--- a/src/dynamics/solver/contact_constraint/two_body_constraint.rs
+++ b/src/dynamics/solver/contact_constraint/two_body_constraint.rs
@@ -380,8 +380,8 @@ impl TwoBodyConstraint {
solve_normal: bool,
solve_friction: bool,
) {
- let mut solver_vel1 = solver_vels[self.solver_vel1 as usize];
- let mut solver_vel2 = solver_vels[self.solver_vel2 as usize];
+ let mut solver_vel1 = solver_vels[self.solver_vel1];
+ let mut solver_vel2 = solver_vels[self.solver_vel2];
TwoBodyConstraintElement::solve_group(
self.cfm_factor,
@@ -398,8 +398,8 @@ impl TwoBodyConstraint {
solve_friction,
);
- solver_vels[self.solver_vel1 as usize] = solver_vel1;
- solver_vels[self.solver_vel2 as usize] = solver_vel2;
+ solver_vels[self.solver_vel1] = solver_vel1;
+ solver_vels[self.solver_vel2] = solver_vel2;
}
pub fn writeback_impulses(&self, manifolds_all: &mut [&mut ContactManifold]) {
diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint_element.rs b/src/dynamics/solver/contact_constraint/two_body_constraint_element.rs
index a8c0037..8c720b9 100644
--- a/src/dynamics/solver/contact_constraint/two_body_constraint_element.rs
+++ b/src/dynamics/solver/contact_constraint/two_body_constraint_element.rs
@@ -243,7 +243,7 @@ impl<N: SimdRealCopy> TwoBodyConstraintElement<N> {
AngVector<N>: SimdDot<AngVector<N>, Result = N>,
{
#[cfg(feature = "dim3")]
- let tangents1 = [tangent1, &dir1.cross(&tangent1)];
+ let tangents1 = [tangent1, &dir1.cross(tangent1)];
#[cfg(feature = "dim2")]
let tangents1 = [&dir1.orthonormal_vector()];
@@ -252,7 +252,7 @@ impl<N: SimdRealCopy> TwoBodyConstraintElement<N> {
for element in elements.iter_mut() {
element
.normal_part
- .solve(cfm_factor, &dir1, im1, im2, solver_vel1, solver_vel2);
+ .solve(cfm_factor, dir1, im1, im2, solver_vel1, solver_vel2);
let limit = limit * element.normal_part.impulse;
let part = &mut element.tangent_part;
part.apply_limit(tangents1, im1, im2, limit, solver_vel1, solver_vel2);
diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs b/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
index b9f3e52..ee176d6 100644
--- a/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
+++ b/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs
@@ -292,21 +292,13 @@ impl TwoBodyConstraintSimd {
solve_friction: bool,
) {
let mut solver_vel1 = SolverVel {
- linear: Vector::from(gather![
- |ii| solver_vels[self.solver_vel1[ii] as usize].linear
- ]),
- angular: AngVector::from(gather![
- |ii| solver_vels[self.solver_vel1[ii] as usize].angular
- ]),
+ linear: Vector::from(gather![|ii| solver_vels[self.solver_vel1[ii]].linear]),
+ angular: AngVector::from(gather![|ii| solver_vels[self.solver_vel1[ii]].angular]),
};
let mut solver_vel2 = SolverVel {
- linear: Vector::from(gather![
- |ii| solver_vels[self.solver_vel2[ii] as usize].linear
- ]),
- angular: AngVector::from(gather![
- |ii| solver_vels[self.solver_vel2[ii] as usize].angular
- ]),
+ linear: Vector::from(gather![|ii| solver_vels[self.solver_vel2[ii]].linear]),
+ angular: AngVector::from(gather![|ii| solver_vels[self.solver_vel2[ii]].angular]),
};
TwoBodyConstraintElement::solve_group(
@@ -325,12 +317,12 @@ impl TwoBodyConstraintSimd {
);
for ii in 0..SIMD_WIDTH {
- solver_vels[self.solver_vel1[ii] as usize].linear = solver_vel1.linear.extract(ii);
- solver_vels[self.solver_vel1[ii] as usize].angular = solver_vel1.angular.extract(ii);
+ solver_vels[self.solver_vel1[ii]].linear = solver_vel1.linear.extract(ii);
+ solver_vels[self.solver_vel1[ii]].angular = solver_vel1.angular.extract(ii);
}
for ii in 0..SIMD_WIDTH {
- solver_vels[self.solver_vel2[ii] as usize].linear = solver_vel2.linear.extract(ii);
- solver_vels[self.solver_vel2[ii] as usize].angular = solver_vel2.angular.extract(ii);
+ solver_vels[self.solver_vel2[ii]].linear = solver_vel2.linear.extract(ii);
+ solver_vels[self.solver_vel2[ii]].angular = solver_vel2.angular.extract(ii);
}
}