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