From 9bf1321f8f1d2e116f44c2461a53f302c4ef4171 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 8 Dec 2020 17:31:49 +0100 Subject: Outsource the contact manifold, SAT, and some shapes. --- src/lib.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index deb9313..ed9eda5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,14 +8,15 @@ //! - The ability to run a perfectly deterministic simulation on different machine, as long as they //! are compliant with the IEEE 754-2008 floating point standard. -#![deny(missing_docs)] +// FIXME: deny that +#![allow(missing_docs)] -pub extern crate crossbeam; -pub extern crate nalgebra as na; #[cfg(feature = "dim2")] -pub extern crate ncollide2d as ncollide; +pub extern crate buckler2d as buckler; #[cfg(feature = "dim3")] -pub extern crate ncollide3d as ncollide; +pub extern crate buckler3d as buckler; +pub extern crate crossbeam; +pub extern crate nalgebra as na; #[cfg(feature = "serde")] #[macro_use] extern crate serde; -- cgit From cc6d1b973002b4d366bc81ec6bf9e8240ad7b404 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 14 Dec 2020 15:51:43 +0100 Subject: Outsource the Shape trait, wquadtree, and shape types. --- src/lib.rs | 140 +------------------------------------------------------------ 1 file changed, 1 insertion(+), 139 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ed9eda5..0cd76a1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,14 +53,6 @@ macro_rules! array( #[allow(dead_code)] fn create_arr(mut callback: impl FnMut(usize) -> T) -> [T; SIMD_WIDTH] { [callback(0usize), callback(1usize), callback(2usize), callback(3usize)] - - // [callback(0usize), callback(1usize), callback(2usize), callback(3usize), - // callback(4usize), callback(5usize), callback(6usize), callback(7usize)] - - // [callback(0usize), callback(1usize), callback(2usize), callback(3usize), - // callback(4usize), callback(5usize), callback(6usize), callback(7usize), - // callback(8usize), callback(9usize), callback(10usize), callback(11usize), - // callback(12usize), callback(13usize), callback(14usize), callback(15usize)] } create_arr($callback) @@ -136,134 +128,4 @@ pub mod dynamics; pub mod geometry; pub mod pipeline; pub mod utils; - -#[cfg(feature = "dim2")] -/// Math primitives used throughout Rapier. -pub mod math { - pub use super::simd::*; - use na::{Isometry2, Matrix2, Point2, Translation2, UnitComplex, Vector2, Vector3, U1, U2}; - - /// The dimension of the physics simulated by this crate. - pub const DIM: usize = 2; - /// The maximum number of point a contact manifold can hold. - pub const MAX_MANIFOLD_POINTS: usize = 2; - /// The dimension of the physics simulated by this crate, given as a type-level-integer. - pub type Dim = U2; - /// The maximum number of angular degrees of freedom of a rigid body given as a type-level-integer. - pub type AngDim = U1; - /// A 2D isometry, i.e., a rotation followed by a translation. - pub type Isometry = Isometry2; - /// A 2D vector. - pub type Vector = Vector2; - /// A scalar used for angular velocity. - /// - /// This is called `AngVector` for coherence with the 3D version of this crate. - pub type AngVector = N; - /// A 2D point. - pub type Point = Point2; - /// A 2D rotation expressed as an unit complex number. - pub type Rotation = UnitComplex; - /// A 2D translation. - pub type Translation = Translation2; - /// The angular inertia of a rigid body. - pub type AngularInertia = N; - /// The principal angular inertia of a rigid body. - pub type PrincipalAngularInertia = N; - /// A matrix that represent the cross product with a given vector. - pub type CrossMatrix = Vector2; - /// A 2x2 matrix. - pub type Matrix = Matrix2; - /// A vector with a dimension equal to the maximum number of degrees of freedom of a rigid body. - pub type SpacialVector = Vector3; - /// A 2D symmetric-definite-positive matrix. - pub type SdpMatrix = crate::utils::SdpMatrix2; -} - -#[cfg(feature = "dim3")] -/// Math primitives used throughout Rapier. -pub mod math { - pub use super::simd::*; - use na::{Isometry3, Matrix3, Point3, Translation3, UnitQuaternion, Vector3, Vector6, U3}; - - /// The dimension of the physics simulated by this crate. - pub const DIM: usize = 3; - /// The maximum number of point a contact manifold can hold. - pub const MAX_MANIFOLD_POINTS: usize = 4; - /// The dimension of the physics simulated by this crate, given as a type-level-integer. - pub type Dim = U3; - /// The maximum number of angular degrees of freedom of a rigid body given as a type-level-integer. - pub type AngDim = U3; - /// A 3D isometry, i.e., a rotation followed by a translation. - pub type Isometry = Isometry3; - /// A 3D vector. - pub type Vector = Vector3; - /// An axis-angle vector used for angular velocity. - pub type AngVector = Vector3; - /// A 3D point. - pub type Point = Point3; - /// A 3D rotation expressed as an unit quaternion. - pub type Rotation = UnitQuaternion; - /// A 3D translation. - pub type Translation = Translation3; - /// The angular inertia of a rigid body. - pub type AngularInertia = crate::utils::SdpMatrix3; - /// The principal angular inertia of a rigid body. - pub type PrincipalAngularInertia = Vector3; - /// A matrix that represent the cross product with a given vector. - pub type CrossMatrix = Matrix3; - /// A 3x3 matrix. - pub type Matrix = Matrix3; - /// A vector with a dimension equal to the maximum number of degrees of freedom of a rigid body. - pub type SpacialVector = Vector6; - /// A 3D symmetric-definite-positive matrix. - pub type SdpMatrix = crate::utils::SdpMatrix3; -} - -#[cfg(not(feature = "simd-is-enabled"))] -mod simd { - use simba::simd::{AutoBoolx4, AutoF32x4}; - /// The number of lanes of a SIMD number. - pub const SIMD_WIDTH: usize = 4; - /// SIMD_WIDTH - 1 - pub const SIMD_LAST_INDEX: usize = 3; - /// A SIMD float with SIMD_WIDTH lanes. - pub type SimdFloat = AutoF32x4; - /// A SIMD bool with SIMD_WIDTH lanes. - pub type SimdBool = AutoBoolx4; -} - -#[cfg(feature = "simd-is-enabled")] -mod simd { - #[allow(unused_imports)] - #[cfg(feature = "simd-nightly")] - use simba::simd::{f32x16, f32x4, f32x8, m32x16, m32x4, m32x8, u8x16, u8x4, u8x8}; - #[cfg(feature = "simd-stable")] - use simba::simd::{WideBoolF32x4, WideF32x4}; - - /// The number of lanes of a SIMD number. - pub const SIMD_WIDTH: usize = 4; - /// SIMD_WIDTH - 1 - pub const SIMD_LAST_INDEX: usize = 3; - #[cfg(not(feature = "simd-nightly"))] - /// A SIMD float with SIMD_WIDTH lanes. - pub type SimdFloat = WideF32x4; - #[cfg(not(feature = "simd-nightly"))] - /// A SIMD bool with SIMD_WIDTH lanes. - pub type SimdBool = WideBoolF32x4; - #[cfg(feature = "simd-nightly")] - /// A SIMD float with SIMD_WIDTH lanes. - pub type SimdFloat = f32x4; - #[cfg(feature = "simd-nightly")] - /// A bool float with SIMD_WIDTH lanes. - pub type SimdBool = m32x4; - - // pub const SIMD_WIDTH: usize = 8; - // pub const SIMD_LAST_INDEX: usize = 7; - // pub type SimdFloat = f32x8; - // pub type SimdBool = m32x8; - - // pub const SIMD_WIDTH: usize = 16; - // pub const SIMD_LAST_INDEX: usize = 15; - // pub type SimdFloat = f32x16; - // pub type SimdBool = m32x16; -} +pub use buckler::math; -- cgit From e231bacec608fa5efd24f7a876572927dbd6c9c4 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Thu, 17 Dec 2020 10:24:36 +0100 Subject: Move all the contact manifold computations out of Rapier. --- src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 0cd76a1..2dc770a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,11 +11,11 @@ // FIXME: deny that #![allow(missing_docs)] +pub extern crate crossbeam; #[cfg(feature = "dim2")] -pub extern crate buckler2d as buckler; +pub extern crate eagl2d as eagl; #[cfg(feature = "dim3")] -pub extern crate buckler3d as buckler; -pub extern crate crossbeam; +pub extern crate eagl3d as eagl; pub extern crate nalgebra as na; #[cfg(feature = "serde")] #[macro_use] @@ -128,4 +128,4 @@ pub mod dynamics; pub mod geometry; pub mod pipeline; pub mod utils; -pub use buckler::math; +pub use eagl::math; -- cgit From 8fe2df126a279a435cc544b150aadf8f7b757868 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Thu, 17 Dec 2020 18:37:16 +0100 Subject: Remove some irrelevant code. --- src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 2dc770a..504b4ea 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,11 +11,11 @@ // FIXME: deny that #![allow(missing_docs)] -pub extern crate crossbeam; #[cfg(feature = "dim2")] -pub extern crate eagl2d as eagl; +pub extern crate cdl2d as cdl; #[cfg(feature = "dim3")] -pub extern crate eagl3d as eagl; +pub extern crate cdl3d as cdl; +pub extern crate crossbeam; pub extern crate nalgebra as na; #[cfg(feature = "serde")] #[macro_use] @@ -128,4 +128,4 @@ pub mod dynamics; pub mod geometry; pub mod pipeline; pub mod utils; -pub use eagl::math; +pub use cdl::math; -- cgit From 5e35250183c863eb0a4c569fa29ec2acdc4202dc Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Wed, 30 Dec 2020 17:46:22 +0100 Subject: Define the MAX_MANIFOLD_POINTS in this crate. --- src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 504b4ea..5ae57f8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -128,4 +128,11 @@ pub mod dynamics; pub mod geometry; pub mod pipeline; pub mod utils; -pub use cdl::math; + +pub mod math { + pub use cdl::math::*; + #[cfg(feature = "dim2")] + pub const MAX_MANIFOLD_POINTS: usize = 2; + #[cfg(feature = "dim3")] + pub const MAX_MANIFOLD_POINTS: usize = 4; +} -- cgit From aa61fe65e3ff0289ecab57b4053a3410cf6d4a87 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 4 Jan 2021 15:14:25 +0100 Subject: Add support of 64-bits reals. --- src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 5ae57f8..476f537 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,10 +11,15 @@ // FIXME: deny that #![allow(missing_docs)] -#[cfg(feature = "dim2")] +#[cfg(all(feature = "dim2", feature = "f32"))] pub extern crate cdl2d as cdl; -#[cfg(feature = "dim3")] +#[cfg(all(feature = "dim2", feature = "f64"))] +pub extern crate cdl2d_f64 as cdl; +#[cfg(all(feature = "dim3", feature = "f32"))] pub extern crate cdl3d as cdl; +#[cfg(all(feature = "dim3", feature = "f64"))] +pub extern crate cdl3d_f64 as cdl; + pub extern crate crossbeam; pub extern crate nalgebra as na; #[cfg(feature = "serde")] -- cgit From d9ca11834e6fa4454231198f98f6403ff4280ca2 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Fri, 22 Jan 2021 16:10:53 +0100 Subject: Add a VERSION constant containing the package version. --- src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 476f537..3fce79f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -127,6 +127,8 @@ pub(crate) const INVALID_U32: u32 = u32::MAX; pub(crate) const INVALID_U64: u64 = u64::MAX; pub(crate) const INVALID_USIZE: usize = INVALID_U32 as usize; +pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); + pub mod counters; pub mod data; pub mod dynamics; -- cgit From 00caa7ce353c02cfc22f0cc27f6361e968157953 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Sat, 23 Jan 2021 12:58:45 +0100 Subject: Fix warnings and 2D compilation when parallelism is ON but SIMD is OFF. --- src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 3fce79f..c177173 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,8 +25,6 @@ pub extern crate nalgebra as na; #[cfg(feature = "serde")] #[macro_use] extern crate serde; -#[macro_use] -extern crate approx; extern crate num_traits as num; // #[macro_use] // extern crate array_macro; @@ -51,6 +49,7 @@ macro_rules! enable_flush_to_zero( } ); +#[cfg(feature = "simd-is-enabled")] macro_rules! array( ($callback: expr; SIMD_WIDTH) => { { -- cgit From 8f7220f03d3c23574b9ece09d81d32e862f1b5c6 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Sun, 24 Jan 2021 11:13:44 +0100 Subject: Rename cdl to parry. --- src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index c177173..08be61a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,13 +12,13 @@ #![allow(missing_docs)] #[cfg(all(feature = "dim2", feature = "f32"))] -pub extern crate cdl2d as cdl; +pub extern crate parry2d as parry; #[cfg(all(feature = "dim2", feature = "f64"))] -pub extern crate cdl2d_f64 as cdl; +pub extern crate parry2d_f64 as parry; #[cfg(all(feature = "dim3", feature = "f32"))] -pub extern crate cdl3d as cdl; +pub extern crate parry3d as parry; #[cfg(all(feature = "dim3", feature = "f64"))] -pub extern crate cdl3d_f64 as cdl; +pub extern crate parry3d_f64 as parry; pub extern crate crossbeam; pub extern crate nalgebra as na; @@ -136,7 +136,7 @@ pub mod pipeline; pub mod utils; pub mod math { - pub use cdl::math::*; + pub use parry::math::*; #[cfg(feature = "dim2")] pub const MAX_MANIFOLD_POINTS: usize = 2; #[cfg(feature = "dim3")] -- cgit From 8ff2bcc3ec666805aceedaa477bde89f2a577d1c Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Wed, 27 Jan 2021 14:20:14 +0100 Subject: Add all the missing docs. --- src/lib.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 08be61a..e63b0d4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,8 +8,7 @@ //! - The ability to run a perfectly deterministic simulation on different machine, as long as they //! are compliant with the IEEE 754-2008 floating point standard. -// FIXME: deny that -#![allow(missing_docs)] +#![warn(missing_docs)] #[cfg(all(feature = "dim2", feature = "f32"))] pub extern crate parry2d as parry; @@ -126,6 +125,7 @@ pub(crate) const INVALID_U32: u32 = u32::MAX; pub(crate) const INVALID_U64: u64 = u64::MAX; pub(crate) const INVALID_USIZE: usize = INVALID_U32 as usize; +/// The string version of Rapier. pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); pub mod counters; @@ -135,10 +135,17 @@ pub mod geometry; pub mod pipeline; pub mod utils; +/// Elementary mathematical entities (vectors, matrices, isometries, etc). pub mod math { pub use parry::math::*; + /// Max number of pairs of contact points from the same + /// contact manifold that can be solved as part of a + /// single contact constraint. #[cfg(feature = "dim2")] pub const MAX_MANIFOLD_POINTS: usize = 2; + /// Max number of pairs of contact points from the same + /// contact manifold that can be solved as part of a + /// single contact constraint. #[cfg(feature = "dim3")] pub const MAX_MANIFOLD_POINTS: usize = 4; } -- cgit