fn from_euler(x: Rad<S>, y: Rad<S>, z: Rad<S>) -> Quaternion<S> {
        let (s1, c1) = Rad::sin_cos(x * cast(0.5f64).unwrap());
        let (s2, c2) = Rad::sin_cos(y * cast(0.5f64).unwrap());
        let (s3, c3) = Rad::sin_cos(z * cast(0.5f64).unwrap());

        Quaternion::new(c1 * c2 * c3 - s1 * s2 * s3,
                        s1 * s2 * c3 + c1 * c2 * s3,
                        s1 * c2 * c3 + c1 * s2 * s3,
                        c1 * s2 * c3 - s1 * c2 * s3)
    }
/// - [Maths - Conversion Euler to Quaternion]
///   (http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm)
[Maths - Conversion Euler to Quaternion]
[ Maths - Conversion Euler to Quaternion ]
fn from_euler(x: Rad<S>, y: Rad<S>, z: Rad<S>) -> Quaternion<S> {
        let (s1, c1) = Rad::sin_cos(x * cast(0.5f64).unwrap());
        let (s2, c2) = Rad::sin_cos(y * cast(0.5f64).unwrap());
        let (s3, c3) = Rad::sin_cos(z * cast(0.5f64).unwrap());
        Quaternion::new(c1 * c2 * c3 - s1 * s2 * s3,
                        s1 * s2 * c3 + c1 * c2 * s3,
                        s1 * c2 * c3 + c1 * s2 * s3,
                        c1 * s2 * c3 - s1 * c2 * s3)
    }
fn from_euler ( x : Rad < S > , y : Rad < S > , z : Rad < S > ) -> Quaternion < S > { let ( s1 , c1 ) = Rad :: sin_cos ( x * cast ( 0.5f64 ) . unwrap ( ) ) ; let ( s2 , c2 ) = Rad :: sin_cos ( y * cast ( 0.5f64 ) . unwrap ( ) ) ; let ( s3 , c3 ) = Rad :: sin_cos ( z * cast ( 0.5f64 ) . unwrap ( ) ) ; Quaternion :: new ( c1 * c2 * c3 - s1 * s2 * s3 , s1 * s2 * c3 + c1 * c2 * s3 , s1 * c2 * c3 + c1 * s2 * s3 , c1 * s2 * c3 - s1 * c2 * s3 ) }
[Maths - Conversion Euler to Quaternion]
(http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm)
[ Maths - Conversion Euler to Quaternion ] ( http : // www . euclideanspace . com / maths / geometry / rotations / conversions / eulerToQuaternion / index . htm )
x
Rad<S>
y
Rad<S>
z
Rad<S>
x
Rad<S>
y
Rad<S>
z
Rad<S>