GtkGL.Quaternion.operator C# (CSharp) Method

operator() public static method

public static operator ( ) : Quaternion
return Quaternion
        public static Quaternion operator *(Quaternion q1, Quaternion q2)
        {
            if(q1 == null) return null;

            if(q2 == null) return null;

            Vector v1 = new Vector(q1.x, q1.y, q1.z);
            Vector v2 = new Vector(q2.x, q2.y, q2.z);

            double angle = ((q1.w * q2.w) - Vector.Dot(v1, v2));

            Vector cross = Vector.Cross(v1, v2);

            v1 *= q2.w;
            v2 *= q1.w;

            Quaternion result = new Quaternion(angle,
                                              (v1.x + v2.x + cross.x),
                                              (v1.y + v2.y + cross.y),
                                              (v1.z + v2.z + cross.z)
                              				  );

            return result;
        }