Example #1
0
        public void Methods_for_individual_components_of_quaternion_product_are_consistent_with_product_operator()
        {
            var x = new Quaternion(-0.1, 0.25, 0.52, -0.7);
            var y = new Quaternion(0.89, 1.1, -2.56, 3.14);

            var expected = x * y;
            var actual   = new Quaternion(QuaternionUtils.ProductA(x, y), QuaternionUtils.ProductB(x, y), QuaternionUtils.ProductC(x, y), QuaternionUtils.ProductD(x, y));

            ExpectAlmostEqual(actual, expected);
        }
Example #2
0
        public static Vector2 ProductXY(Rotation3 r, Vector3 v)
        {
            var q1 = r.Quaternion * v;
            var q2 = r.Quaternion.Conjugate;

            var x = QuaternionUtils.ProductB(q1, q2);
            var y = QuaternionUtils.ProductC(q1, q2);

            return(new Vector2(x, y));
        }
 public Vector3 ApplyInv(Vector3 v)
 {
     return(QuaternionUtils.ProductIm(_quaternion.Conjugate * v, _quaternion));
 }
Example #4
0
 public static double ProductZ(Rotation3 r, Vector3 v)
 {
     return(QuaternionUtils.ProductD(r.Quaternion * v, r.Quaternion.Conjugate));
 }
Example #5
0
 public static Vector3 RowZ(this Rotation3 @this)
 {
     return(QuaternionUtils.ProductIm(@this.Quaternion.Conjugate.TimesK(), @this.Quaternion));
 }
Example #6
0
 public static Vector3 ColY(this Rotation3 @this)
 {
     return(QuaternionUtils.ProductIm(@this.Quaternion.TimesJ(), @this.Quaternion.Conjugate));
 }
Example #7
0
 public static double InvProductY(Rotation3 r, Vector3 v)
 {
     return(QuaternionUtils.ProductC(r.Quaternion.Conjugate * v, r.Quaternion));
 }