Beispiel #1
0
        public static Quaternion operator *(Quaternion q1, Quaternion q2)
        {
            var q = new Quaternion
            {
                W = q1.W * q2.W - q1.X * q2.X - q1.Y * q2.Y - q1.Z * q2.Z,
                X = q1.W * q2.X + q1.X * q2.W + q1.Y * q2.Z - q1.Z * q2.Y,
                Y = q1.W * q2.Y + q1.Y * q2.W + q1.Z * q2.X - q1.X * q2.Z,
                Z = q1.W * q2.Z + q1.Z * q2.W + q1.X * q2.Y - q1.Y * q2.X
            };

            return q;

        }
Beispiel #2
0
        public Vector3 Rotate(Vector3 v)
        {
            var vQuat = new Quaternion
            {
                W = 0.0,
                X = v.X,
                Y = v.Y,
                Z = v.Z
            };

            var resQuat = this * (vQuat * this.Conjugate());

            return new Vector3 { X = resQuat.X, Y = resQuat.Y, Z = resQuat.Z };
        }