diff options
| author | Sébastien Crozet <sebcrozet@dimforge.com> | 2024-01-27 16:49:53 +0100 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2024-01-27 17:13:08 +0100 |
| commit | da92e5c2837b27433286cf0dd9d887fd44dda254 (patch) | |
| tree | 00428ce290288f5c64e53dee13d88ffdde4df0ca /src/dynamics/solver/contact_constraint | |
| parent | aef873f20e7a1ee66b9d4c066884fa794048587b (diff) | |
| download | rapier-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')
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); } } |
