use num::{One, Zero}; use simba::scalar::{ClosedAdd, ClosedMul}; use crate::base::allocator::Allocator; use crate::base::dimension::DimName; use crate::base::{DefaultAllocator, MatrixN, Scalar}; use crate::geometry::Rotation; /// # Identity impl Rotation where N: Scalar + Zero + One, DefaultAllocator: Allocator, { /// Creates a new square identity rotation of the given `dimension`. /// /// # Example /// ``` /// # use nalgebra::Quaternion; /// let rot1 = Quaternion::identity(); /// let rot2 = Quaternion::new(1.0, 2.0, 3.0, 4.0); /// /// assert_eq!(rot1 * rot2, rot2); /// assert_eq!(rot2 * rot1, rot2); /// ``` #[inline] pub fn identity() -> Rotation { Self::from_matrix_unchecked(MatrixN::::identity()) } } impl One for Rotation where N: Scalar + Zero + One + ClosedAdd + ClosedMul, DefaultAllocator: Allocator, { #[inline] fn one() -> Self { Self::identity() } }