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 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); }
public static double ProductY(Rotation3 r, Vector3 v) { return(QuaternionUtils.ProductC(r.Quaternion * v, r.Quaternion.Conjugate)); }