2019-03-23 21:29:07 +08:00
|
|
|
use crate::geometry::{Isometry, Rotation2, Rotation3, UnitComplex, UnitQuaternion};
|
2016-12-05 05:44:42 +08:00
|
|
|
|
2020-11-21 00:46:03 +08:00
|
|
|
/// A 2-dimensional direct isometry using a unit complex number for its rotational part.
|
|
|
|
///
|
|
|
|
/// **Because this is an alias, not all its methods are listed here. See the [`Isometry`](crate::Isometry) type too.**
|
|
|
|
///
|
|
|
|
/// Also known as a 2D rigid-body motion, or as an element of SE(2).
|
|
|
|
|
2021-04-11 17:00:38 +08:00
|
|
|
pub type Isometry2<T> = Isometry<T, UnitComplex<T>, 2>;
|
2016-12-05 05:44:42 +08:00
|
|
|
|
2020-11-21 00:46:03 +08:00
|
|
|
/// A 3-dimensional direct isometry using a unit quaternion for its rotational part.
|
|
|
|
///
|
|
|
|
/// **Because this is an alias, not all its methods are listed here. See the [`Isometry`](crate::Isometry) type too.**
|
|
|
|
///
|
|
|
|
/// Also known as a rigid-body motion, or as an element of SE(3).
|
2021-04-11 17:00:38 +08:00
|
|
|
pub type Isometry3<T> = Isometry<T, UnitQuaternion<T>, 3>;
|
2016-12-05 05:44:42 +08:00
|
|
|
|
2020-11-21 00:46:03 +08:00
|
|
|
/// A 2-dimensional direct isometry using a rotation matrix for its rotational part.
|
|
|
|
///
|
|
|
|
/// **Because this is an alias, not all its methods are listed here. See the [`Isometry`](crate::Isometry) type too.**
|
|
|
|
///
|
|
|
|
/// Also known as a rigid-body motion, or as an element of SE(2).
|
2021-04-11 17:00:38 +08:00
|
|
|
pub type IsometryMatrix2<T> = Isometry<T, Rotation2<T>, 2>;
|
2016-12-05 05:44:42 +08:00
|
|
|
|
2020-11-21 00:46:03 +08:00
|
|
|
/// A 3-dimensional direct isometry using a rotation matrix for its rotational part.
|
|
|
|
///
|
|
|
|
/// **Because this is an alias, not all its methods are listed here. See the [`Isometry`](crate::Isometry) type too.**
|
|
|
|
///
|
|
|
|
/// Also known as a rigid-body motion, or as an element of SE(3).
|
2021-04-11 17:00:38 +08:00
|
|
|
pub type IsometryMatrix3<T> = Isometry<T, Rotation3<T>, 3>;
|
2020-10-13 16:12:14 +08:00
|
|
|
|
|
|
|
// This tests that the types correctly implement `Copy`, without having to run tests
|
|
|
|
// (when targeting no-std for example).
|
|
|
|
#[allow(dead_code)]
|
|
|
|
fn ensure_copy() {
|
|
|
|
fn is_copy<T: Copy>() {}
|
|
|
|
|
|
|
|
is_copy::<IsometryMatrix2<f32>>();
|
|
|
|
is_copy::<IsometryMatrix3<f32>>();
|
|
|
|
is_copy::<Isometry2<f32>>();
|
|
|
|
is_copy::<Isometry3<f32>>();
|
|
|
|
}
|