diff --git a/src/quaternion.rs b/src/quaternion.rs index 61adb1d..5cbbc5e 100644 --- a/src/quaternion.rs +++ b/src/quaternion.rs @@ -39,6 +39,7 @@ pub trait Quaternion { pure fn inverse() -> self; pure fn length2() -> T; pure fn length() -> T; + pure fn normalize() -> self; pure fn to_Mat3() -> Mat3; pure fn to_Mat4() -> Mat4; @@ -157,6 +158,13 @@ pub impl Quat: Quaternion { self.length2().sqrt() } + #[inline(always)] + pure fn normalize() -> Quat { + let mut n: T = cast(1); + n /= self.length(); + return self.mul_t(n); + } + #[inline(always)] pure fn to_Mat3() -> Mat3 { let x2 = self.x + self.x;