diff options
| author | Sébastien Crozet <sebcrozet@dimforge.com> | 2024-04-24 22:37:21 +0200 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2024-04-30 23:10:46 +0200 |
| commit | c079452a478bb2f5d976cbba162e7f92252b505d (patch) | |
| tree | 9ecee7655f135a8d916060df95b265f9314a9408 /src/dynamics/solver/contact_constraint | |
| parent | 6635d49c8bdaca13011a888d3901436eb79c599e (diff) | |
| download | rapier-c079452a478bb2f5d976cbba162e7f92252b505d.tar.gz rapier-c079452a478bb2f5d976cbba162e7f92252b505d.tar.bz2 rapier-c079452a478bb2f5d976cbba162e7f92252b505d.zip | |
feat: add IntegrationParameters::length_unit to adjust internal threshold based on user-defined length units
Diffstat (limited to 'src/dynamics/solver/contact_constraint')
4 files changed, 8 insertions, 8 deletions
diff --git a/src/dynamics/solver/contact_constraint/one_body_constraint.rs b/src/dynamics/solver/contact_constraint/one_body_constraint.rs index c31d2aa..2392493 100644 --- a/src/dynamics/solver/contact_constraint/one_body_constraint.rs +++ b/src/dynamics/solver/contact_constraint/one_body_constraint.rs @@ -310,8 +310,8 @@ impl OneBodyConstraintBuilder { { let rhs_wo_bias = info.normal_rhs_wo_bias + dist.max(0.0) * inv_dt; let rhs_bias = erp_inv_dt - * (dist + params.allowed_linear_error) - .clamp(-params.max_penetration_correction, 0.0); + * (dist + params.allowed_linear_error()) + .clamp(-params.max_penetration_correction(), 0.0); let new_rhs = rhs_wo_bias + rhs_bias; is_fast_contact = is_fast_contact || (-new_rhs * params.dt > ccd_thickness * 0.5); 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 77dfc42..5710bc4 100644 --- a/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs +++ b/src/dynamics/solver/contact_constraint/one_body_constraint_simd.rs @@ -265,9 +265,9 @@ impl SimdOneBodyConstraintBuilder { let cfm_factor = SimdReal::splat(params.cfm_factor()); let dt = SimdReal::splat(params.dt); let inv_dt = SimdReal::splat(params.inv_dt()); - let allowed_lin_err = SimdReal::splat(params.allowed_linear_error); + let allowed_lin_err = SimdReal::splat(params.allowed_linear_error()); let erp_inv_dt = SimdReal::splat(params.erp_inv_dt()); - let max_penetration_correction = SimdReal::splat(params.max_penetration_correction); + let max_penetration_correction = SimdReal::splat(params.max_penetration_correction()); let warmstart_coeff = SimdReal::splat(params.warmstart_coefficient); let rb2 = gather![|ii| &bodies[constraint.solver_vel2[ii]]]; diff --git a/src/dynamics/solver/contact_constraint/two_body_constraint.rs b/src/dynamics/solver/contact_constraint/two_body_constraint.rs index f0d95d9..39f4931 100644 --- a/src/dynamics/solver/contact_constraint/two_body_constraint.rs +++ b/src/dynamics/solver/contact_constraint/two_body_constraint.rs @@ -410,8 +410,8 @@ impl TwoBodyConstraintBuilder { { let rhs_wo_bias = info.normal_rhs_wo_bias + dist.max(0.0) * inv_dt; let rhs_bias = erp_inv_dt - * (dist + params.allowed_linear_error) - .clamp(-params.max_penetration_correction, 0.0); + * (dist + params.allowed_linear_error()) + .clamp(-params.max_penetration_correction(), 0.0); let new_rhs = rhs_wo_bias + rhs_bias; is_fast_contact = is_fast_contact || (-new_rhs * params.dt > ccd_thickness * 0.5); 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 a6c387d..0b1b419 100644 --- a/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs +++ b/src/dynamics/solver/contact_constraint/two_body_constraint_simd.rs @@ -255,9 +255,9 @@ impl TwoBodyConstraintBuilderSimd { let cfm_factor = SimdReal::splat(params.cfm_factor()); let dt = SimdReal::splat(params.dt); let inv_dt = SimdReal::splat(params.inv_dt()); - let allowed_lin_err = SimdReal::splat(params.allowed_linear_error); + let allowed_lin_err = SimdReal::splat(params.allowed_linear_error()); let erp_inv_dt = SimdReal::splat(params.erp_inv_dt()); - let max_penetration_correction = SimdReal::splat(params.max_penetration_correction); + let max_penetration_correction = SimdReal::splat(params.max_penetration_correction()); let warmstart_coeff = SimdReal::splat(params.warmstart_coefficient); let rb1 = gather![|ii| &bodies[constraint.solver_vel1[ii]]]; |
