2016-12-05 05:44:42 +08:00
|
|
|
|
use core::MatrixArray;
|
|
|
|
|
use core::dimension::{U1, U2, U3, DimNameSum};
|
|
|
|
|
|
|
|
|
|
use geometry::{TransformBase, TGeneral, TProjective, TAffine};
|
|
|
|
|
|
2017-02-13 01:17:09 +08:00
|
|
|
|
/// A `D`-dimensional general transformation that may not be inversible. Stored as an homogeneous
|
|
|
|
|
/// `(D + 1) × (D + 1)` matrix.
|
|
|
|
|
pub type Transform<N, D> = TransformBase<N, D, MatrixArray<N, DimNameSum<D, U1>, DimNameSum<D, U1>>, TGeneral>;
|
|
|
|
|
|
|
|
|
|
/// An inversible `D`-dimensional general transformation. Stored as an homogeneous
|
|
|
|
|
/// `(D + 1) × (D + 1)` matrix.
|
2016-12-05 05:44:42 +08:00
|
|
|
|
pub type Projective<N, D> = TransformBase<N, D, MatrixArray<N, DimNameSum<D, U1>, DimNameSum<D, U1>>, TProjective>;
|
|
|
|
|
|
2017-02-13 01:17:09 +08:00
|
|
|
|
/// A `D`-dimensional affine transformation. Stored as an homogeneous `(D + 1) × (D + 1)` matrix.
|
|
|
|
|
pub type Affine<N, D> = TransformBase<N, D, MatrixArray<N, DimNameSum<D, U1>, DimNameSum<D, U1>>, TAffine>;
|
|
|
|
|
|
|
|
|
|
/// A 2D general transformation that may not be inversible. Stored as an homogeneous 3x3 matrix.
|
|
|
|
|
pub type Transform2<N> = Transform<N, U2>;
|
|
|
|
|
/// An inversible 2D general transformation. Stored as an homogeneous 3x3 matrix.
|
2016-12-05 05:44:42 +08:00
|
|
|
|
pub type Projective2<N> = Projective<N, U2>;
|
2017-02-13 01:17:09 +08:00
|
|
|
|
/// A 2D affine transformation. Stored as an homogeneous 3x3 matrix.
|
|
|
|
|
pub type Affine2<N> = Affine<N, U2>;
|
2016-12-05 05:44:42 +08:00
|
|
|
|
|
2017-02-13 01:17:09 +08:00
|
|
|
|
/// A 3D general transformation that may not be inversible. Stored as an homogeneous 4x4 matrix.
|
|
|
|
|
pub type Transform3<N> = Transform<N, U3>;
|
|
|
|
|
/// An inversible 3D general transformation. Stored as an homogeneous 4x4 matrix.
|
2016-12-05 05:44:42 +08:00
|
|
|
|
pub type Projective3<N> = Projective<N, U3>;
|
2017-02-13 01:17:09 +08:00
|
|
|
|
/// A 3D affine transformation. Stored as an homogeneous 4x4 matrix.
|
|
|
|
|
pub type Affine3<N> = Affine<N, U3>;
|