Add implementation of `RotationMatrix` for `UnitQuat`.
This commit is contained in:
parent
6db6db19fc
commit
948341685e
|
@ -12,7 +12,7 @@ use structs::{Vec3, Pnt3, Rot3, Mat3};
|
|||
use traits::operations::{ApproxEq, Inv, POrd, POrdering, Axpy};
|
||||
use traits::structure::{Cast, Indexable, Iterable, IterableMut, Dim, Shape, BaseFloat, BaseNum,
|
||||
Bounded, Repeat};
|
||||
use traits::geometry::{Norm, Rotation, Rotate, RotationTo, Transform};
|
||||
use traits::geometry::{Norm, Rotation, RotationMatrix, Rotate, RotationTo, Transform};
|
||||
|
||||
#[cfg(feature="arbitrary")]
|
||||
use quickcheck::{Arbitrary, Gen};
|
||||
|
@ -156,6 +156,8 @@ impl<N: ApproxEq<N> + BaseFloat> Div<Quat<N>> for Quat<N> {
|
|||
}
|
||||
}
|
||||
|
||||
rand_impl!(Quat, w, i, j, k);
|
||||
|
||||
|
||||
/// A unit quaternion that can represent a 3D rotation.
|
||||
#[repr(C)]
|
||||
|
@ -246,8 +248,6 @@ impl<N: BaseFloat> UnitQuat<N> {
|
|||
}
|
||||
}
|
||||
|
||||
rand_impl!(Quat, w, i, j, k);
|
||||
|
||||
|
||||
impl<N> UnitQuat<N> {
|
||||
/// Creates a new unit quaternion from a quaternion.
|
||||
|
@ -432,6 +432,15 @@ impl<N: BaseFloat> Rotation<Vec3<N>> for UnitQuat<N> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<N: BaseFloat> RotationMatrix<N, Vec3<N>, Vec3<N>> for UnitQuat<N> {
|
||||
type Output = Rot3<N>;
|
||||
|
||||
#[inline]
|
||||
fn to_rot_mat(&self) -> Rot3<N> {
|
||||
self.to_rot()
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: BaseNum + Neg<Output = N>> Rotate<Vec3<N>> for UnitQuat<N> {
|
||||
#[inline]
|
||||
fn rotate(&self, v: &Vec3<N>) -> Vec3<N> {
|
||||
|
|
Loading…
Reference in New Issue