public void DivisionScalar() { double s = 123.456; QuaternionD q = new QuaternionD(1.0, 2.0, 3.0, 4.0); QuaternionD expectedResult = new QuaternionD(1.0 / s, 2.0 / s, 3.0 / s, 4.0 / s); QuaternionD result = QuaternionD.Divide(q, s); Assert.IsTrue(QuaternionD.AreNumericallyEqual(expectedResult, result)); }
public void QuaternionDDivideTest() { QuaternionD a = new QuaternionD(1.0f, 2.0f, 3.0f, 4.0f); QuaternionD b = new QuaternionD(5.0f, 6.0f, 7.0f, 8.0f); QuaternionD expected = new QuaternionD(-0.045977015f, -0.09195402f, -7.450581E-9f, 0.402298868f); QuaternionD actual; actual = QuaternionD.Divide(a, b); Assert.True(MathHelper.Equal(expected, actual), $"QuaternionD.Divide did not return the expected value: expected {expected} actual {actual}"); }
public void Division() { double angle1 = 0.4; Vector3D axis1 = new Vector3D(1.0, 2.0, 3.0); QuaternionD q1 = QuaternionD.CreateRotation(axis1, angle1); Matrix33D m1 = Matrix33D.CreateRotation(axis1, angle1); double angle2 = -1.6; Vector3D axis2 = new Vector3D(1.0, -2.0, -3.5); QuaternionD q2 = QuaternionD.CreateRotation(axis2, angle2); Matrix33D m2 = Matrix33D.CreateRotation(axis2, angle2); Vector3D v = new Vector3D(0.3, -2.4, 5.6); Vector3D result1 = QuaternionD.Divide(q2, q1).Rotate(v); Vector3D result2 = m2 * m1.Inverse * v; Assert.IsTrue(Vector3D.AreNumericallyEqual(result1, result2)); }