public void TestAsQuaternion() { var twist = new Twist(0.4f); var swing = new Swing(0.2f, 0.3f); var twistSwing = new TwistSwing(twist, swing); MathAssert.AreEqual( twist.AsQuaternion(CartesianAxis.X).Chain(swing.AsQuaternion(CartesianAxis.X)), twistSwing.AsQuaternion(CartesianAxis.X), Acc); MathAssert.AreEqual( twist.AsQuaternion(CartesianAxis.X).Chain(swing.AsQuaternion(CartesianAxis.X)), twistSwing.AsQuaternion(CartesianAxis.X), Acc); MathAssert.AreEqual( twist.AsQuaternion(CartesianAxis.X).Chain(swing.AsQuaternion(CartesianAxis.X)), twistSwing.AsQuaternion(CartesianAxis.X), Acc); MathAssert.AreEqual( twist.AsQuaternion(CartesianAxis.X).Chain(swing.AsQuaternion(CartesianAxis.X)), twistSwing.AsQuaternion(CartesianAxis.X), Acc); }
public void TestFromTo() { var rnd = new Random(0); Vector3 a = MakeRandomUnitVector(rnd); Vector3 b = MakeRandomUnitVector(rnd); foreach (CartesianAxis twistAxis in CartesianAxes.Values) { Swing fromAToB = Swing.FromTo(twistAxis, a, b); MathAssert.AreEqual(b, Vector3.Transform(a, fromAToB.AsQuaternion(twistAxis)), Acc); Swing fromBToA = Swing.FromTo(twistAxis, b, a); MathAssert.AreEqual(a, Vector3.Transform(b, fromBToA.AsQuaternion(twistAxis)), Acc); } }