Type Definition nalgebra::geometry::IsometryMatrix2 [−][src]
type IsometryMatrix2<N> = Isometry<N, U2, Rotation2<N>>;
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
type too.
Also known as a rigid-body motion, or as an element of SE(2).
Implementations
impl<N: SimdRealField> IsometryMatrix2<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> IsometryMatrix2<N> where
N::Element: SimdRealField,
[src]pub fn new(translation: Vector2<N>, angle: N) -> Self
[src]
Creates a new 2D isometry from a translation and a rotation angle.
Its rotational part is represented as a 2x2 rotation matrix.
Example
let iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2); assert_eq!(iso * Point2::new(3.0, 4.0), Point2::new(-3.0, 5.0));
pub fn translation(x: N, y: N) -> Self
[src]
Creates a new isometry from the given translation coordinates.
pub fn rotation(angle: N) -> Self
[src]
Creates a new isometry from the given rotation angle.
impl<N: SimdRealField> IsometryMatrix2<N>
[src]
impl<N: SimdRealField> IsometryMatrix2<N>
[src]pub fn lerp_slerp(&self, other: &Self, t: N) -> Self where
N: RealField,
[src]
N: RealField,
Interpolates between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.
Panics if the angle between both rotations is 180 degrees (in which case the interpolation
is not well-defined). Use .try_lerp_slerp
instead to avoid the panic.
Examples:
let t1 = Translation2::new(1.0, 2.0); let t2 = Translation2::new(4.0, 8.0); let q1 = Rotation2::new(std::f32::consts::FRAC_PI_4); let q2 = Rotation2::new(-std::f32::consts::PI); let iso1 = IsometryMatrix2::from_parts(t1, q1); let iso2 = IsometryMatrix2::from_parts(t2, q2); let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0); assert_eq!(iso3.translation.vector, Vector2::new(2.0, 4.0)); assert_relative_eq!(iso3.rotation.angle(), std::f32::consts::FRAC_PI_2);