public void MDLAnimatedQuaternionTest()
        {
            // Quaternion
            TestRuntime.AssertXcodeVersion(11, 0);

            using (var animatedQuat = new MDLAnimatedQuaternion()) {
                var quat = new Quaternion(1.1f, 2.2f, 3.3f, 4.4f);

                animatedQuat.SetQuaternion(quat, 0);
                var returnedQuat = animatedQuat.GetFloatQuaternion(0);
                Asserts.AreEqual(quat, returnedQuat, "A");

                animatedQuat.Reset(TestMatrices.QuaternionArray, TestMatrices.GetTimesArray(TestMatrices.QuaternionArray.Length));
                var arr = animatedQuat.GetQuaternionValues(20);
                Asserts.AreEqual(TestMatrices.QuaternionArray, arr, "C1");
            }


            using (var animatedQuat = new MDLAnimatedQuaternion()) {
                var quatd = new Quaterniond(10.1, 20.2, 30.3, 40.4);

                animatedQuat.SetQuaternion(quatd, 0);
                Asserts.AreEqual(quatd, animatedQuat.GetDoubleQuaternion(0), 0.0001, "B");

                animatedQuat.Reset(TestMatrices.QuaterniondArray, TestMatrices.GetTimesArray(TestMatrices.QuaterniondArray.Length));
                var arrd = animatedQuat.GetQuaterniondValues(20);
                Asserts.AreEqual(TestMatrices.QuaterniondArray, arrd, "C2");
            }
        }
示例#2
0
 public static void AreEqual(Quaterniond expected, Quaterniond actual, double delta, string message)
 {
     Assert.AreEqual(expected.X, actual.X, delta, $"{message} (X) expected: {expected} actual: {actual}");
     Assert.AreEqual(expected.Y, actual.Y, delta, $"{message} (Y) expected: {expected} actual: {actual}");
     Assert.AreEqual(expected.Z, actual.Z, delta, $"{message} (Z) expected: {expected} actual: {actual}");
     Assert.AreEqual(expected.W, actual.W, delta, $"{message} (W) expected: {expected} actual: {actual}");
 }
示例#3
0
 public static void AreEqual(Quaterniond expected, Quaterniond actual, double delta, string message)
 {
     Assert.AreEqual(expected.X, actual.X, delta, message + " (X)");
     Assert.AreEqual(expected.Y, actual.Y, delta, message + " (Y)");
     Assert.AreEqual(expected.Z, actual.Z, delta, message + " (Z)");
     Assert.AreEqual(expected.W, actual.W, delta, message + " (W)");
 }
示例#4
0
        public void Rotate_d()
        {
            var quaternion = new Quaterniond(1, 2, 3, 4);
            var matrix     = SCNMatrix4.Rotate(quaternion);

            AssertEqual(matrix, "Rotate",
                        TwoFifteenths, 7 * TwoFifteenths, -OneThird, 0,
                        -TwoThirds, OneThird, TwoThirds, 0,
                        11 * OneFifteenth, TwoFifteenths, TwoThirds, 0,
                        0, 0, 0, 1);
        }
        public virtual Quaterniond [] GetQuaterniondValues()
        {
            var count    = ElementCount * TimeSampleCount;
            var timesArr = new Quaterniond [(int)count];

            unsafe {
                int typeSize = sizeof(Quaterniond);

                fixed(Quaterniond *arrptr = timesArr)
                MDLMemoryHelper.FetchValues(typeSize, (IntPtr)arrptr, count, _GetDoubleQuaternionArray);
            }

            return(timesArr);
        }
        public virtual Quaterniond [] GetQuaterniondValues(nuint maxCount)
        {
            var timesArr = new Quaterniond [(int)maxCount];

            unsafe {
                int typeSize = sizeof(Quaterniond);
                fixed(Quaterniond *arrptr = timesArr)
                {
                    var rv = MDLMemoryHelper.FetchValues(typeSize, (IntPtr)arrptr, maxCount, _GetDoubleQuaternionArray);

                    Array.Resize(ref timesArr, (int)rv);
                }
            }

            return(timesArr);
        }
示例#7
0
    public static void AreEqual(Quaterniond expected, Quaterniond actual, string message)
    {
        if (expected == null)
        {
            if (actual == null)
            {
                return;
            }
            Assert.Fail($"Expected null, got {actual}. {message}");
        }
        else if (actual == null)
        {
            Assert.Fail($"Expected {expected}, got null. {message}");
        }

        Assert.AreEqual(expected.X, actual.X, $"{message} (X) expected: {expected} actual: {actual}");
        Assert.AreEqual(expected.Y, actual.Y, $"{message} (Y) expected: {expected} actual: {actual}");
        Assert.AreEqual(expected.Z, actual.Z, $"{message} (Z) expected: {expected} actual: {actual}");
        Assert.AreEqual(expected.W, actual.W, $"{message} (W) expected: {expected} actual: {actual}");
    }