1 use super::glam::{DQuat, Quat}; 2 use crate::{Quaternion, UnitQuaternion}; 3 4 impl From<Quat> for Quaternion<f32> { 5 #[inline] from(e: Quat) -> Quaternion<f32>6 fn from(e: Quat) -> Quaternion<f32> { 7 Quaternion::new(e.w, e.x, e.y, e.z) 8 } 9 } 10 11 impl From<Quaternion<f32>> for Quat { 12 #[inline] from(e: Quaternion<f32>) -> Quat13 fn from(e: Quaternion<f32>) -> Quat { 14 Quat::from_xyzw(e.i, e.j, e.k, e.w) 15 } 16 } 17 18 impl From<UnitQuaternion<f32>> for Quat { 19 #[inline] from(e: UnitQuaternion<f32>) -> Quat20 fn from(e: UnitQuaternion<f32>) -> Quat { 21 Quat::from_xyzw(e.i, e.j, e.k, e.w) 22 } 23 } 24 25 impl From<DQuat> for Quaternion<f64> { 26 #[inline] from(e: DQuat) -> Quaternion<f64>27 fn from(e: DQuat) -> Quaternion<f64> { 28 Quaternion::new(e.w, e.x, e.y, e.z) 29 } 30 } 31 32 impl From<Quaternion<f64>> for DQuat { 33 #[inline] from(e: Quaternion<f64>) -> DQuat34 fn from(e: Quaternion<f64>) -> DQuat { 35 DQuat::from_xyzw(e.i, e.j, e.k, e.w) 36 } 37 } 38 39 impl From<UnitQuaternion<f64>> for DQuat { 40 #[inline] from(e: UnitQuaternion<f64>) -> DQuat41 fn from(e: UnitQuaternion<f64>) -> DQuat { 42 DQuat::from_xyzw(e.i, e.j, e.k, e.w) 43 } 44 } 45 46 impl From<Quat> for UnitQuaternion<f32> { 47 #[inline] from(e: Quat) -> UnitQuaternion<f32>48 fn from(e: Quat) -> UnitQuaternion<f32> { 49 UnitQuaternion::new_normalize(Quaternion::from(e)) 50 } 51 } 52 53 impl From<DQuat> for UnitQuaternion<f64> { 54 #[inline] from(e: DQuat) -> UnitQuaternion<f64>55 fn from(e: DQuat) -> UnitQuaternion<f64> { 56 UnitQuaternion::new_normalize(Quaternion::from(e)) 57 } 58 } 59