aboutsummaryrefslogtreecommitdiff
path: root/src/utils.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-12-17 10:24:36 +0100
committerCrozet Sébastien <developer@crozet.re>2020-12-29 11:31:00 +0100
commite231bacec608fa5efd24f7a876572927dbd6c9c4 (patch)
tree596f0b6a1fc666586ffcd71d07a39a7c182c6ef8 /src/utils.rs
parentcc6d1b973002b4d366bc81ec6bf9e8240ad7b404 (diff)
downloadrapier-e231bacec608fa5efd24f7a876572927dbd6c9c4.tar.gz
rapier-e231bacec608fa5efd24f7a876572927dbd6c9c4.tar.bz2
rapier-e231bacec608fa5efd24f7a876572927dbd6c9c4.zip
Move all the contact manifold computations out of Rapier.
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/utils.rs b/src/utils.rs
index 4089631..48414bc 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -5,6 +5,7 @@ use na::{Matrix2, Matrix3, Matrix3x2, Point2, Point3, Scalar, SimdRealField, Vec
use num::Zero;
use simba::simd::SimdValue;
+use eagl::utils::SdpMatrix3;
use std::ops::{Add, Mul};
use {
crate::math::{AngularInertia, SimdBool, SimdReal},
@@ -468,8 +469,7 @@ impl WAngularInertia<SimdReal> for SimdReal {
}
}
-#[cfg(feature = "dim3")]
-impl WAngularInertia<f32> for AngularInertia<f32> {
+impl WAngularInertia<f32> for SdpMatrix3<f32> {
type AngVector = Vector3<f32>;
type LinVector = Vector3<f32>;
type AngMatrix = Matrix3<f32>;
@@ -485,7 +485,7 @@ impl WAngularInertia<f32> for AngularInertia<f32> {
if determinant.is_zero() {
Self::zero()
} else {
- AngularInertia {
+ SdpMatrix3 {
m11: minor_m12_m23 / determinant,
m12: -minor_m11_m23 / determinant,
m13: minor_m11_m22 / determinant,
@@ -497,7 +497,7 @@ impl WAngularInertia<f32> for AngularInertia<f32> {
}
fn squared(&self) -> Self {
- AngularInertia {
+ SdpMatrix3 {
m11: self.m11 * self.m11 + self.m12 * self.m12 + self.m13 * self.m13,
m12: self.m11 * self.m12 + self.m12 * self.m22 + self.m13 * self.m23,
m13: self.m11 * self.m13 + self.m12 * self.m23 + self.m13 * self.m33,
@@ -533,8 +533,7 @@ impl WAngularInertia<f32> for AngularInertia<f32> {
}
}
-#[cfg(feature = "dim3")]
-impl WAngularInertia<SimdReal> for AngularInertia<SimdReal> {
+impl WAngularInertia<SimdReal> for SdpMatrix3<SimdReal> {
type AngVector = Vector3<SimdReal>;
type LinVector = Vector3<SimdReal>;
type AngMatrix = Matrix3<SimdReal>;
@@ -551,7 +550,7 @@ impl WAngularInertia<SimdReal> for AngularInertia<SimdReal> {
let is_zero = determinant.simd_eq(zero);
let inv_det = (<SimdReal>::one() / determinant).select(is_zero, zero);
- AngularInertia {
+ SdpMatrix3 {
m11: minor_m12_m23 * inv_det,
m12: -minor_m11_m23 * inv_det,
m13: minor_m11_m22 * inv_det,
@@ -573,7 +572,7 @@ impl WAngularInertia<SimdReal> for AngularInertia<SimdReal> {
}
fn squared(&self) -> Self {
- AngularInertia {
+ SdpMatrix3 {
m11: self.m11 * self.m11 + self.m12 * self.m12 + self.m13 * self.m13,
m12: self.m11 * self.m12 + self.m12 * self.m22 + self.m13 * self.m23,
m13: self.m11 * self.m13 + self.m12 * self.m23 + self.m13 * self.m33,