Ejemplo n.º 1
0
        public void CatmullromTests()
        {
            Vector4 expected;
            Vector4 d = new Vector4(12.2352f, -1.23525f, 3.1234f, 51.3415f);

            expected = new Vector4(402160.9f, -1056407f, -353251.4f, 374571.3f);
            Assert.IsTrue(TestHelper.ApproximatelyEquals(expected, Vector4.CatmullRom(a, b, c, d, 13.125123f)), "#1");

            expected = new Vector4(-551.6433f, 1464.028f, 505.8189f, -674.8631f);
            Assert.IsTrue(TestHelper.ApproximatelyEquals(expected, Vector4.CatmullRom(b, d, c, a, -1.125123f)), "#1");
        }
Ejemplo n.º 2
0
        public void Vector4_CatmullRomCalculatedCorrectly()
        {
            var vector1 = new Vector4(-123, -234, 100, 111);
            var vector2 = new Vector4(234, -345, 200, 222);
            var vector3 = new Vector4(456, 789, 300, 333);
            var vector4 = new Vector4(-456, 986, 400, 444);

            var result = Vector4.CatmullRom(vector1, vector2, vector3, vector4, 0.55f);

            TheResultingValue(result).WithinDelta(0.1f)
            .ShouldBe(440.8f, 273.1f, 255.0f, 283.05f);
        }
Ejemplo n.º 3
0
        public static void CatmullRomRef(int times)
        {
            var     value1 = new Vector4(0f, 2f, 4f, 6f);
            var     value2 = new Vector4(1f, 3f, 5f, 7f);
            var     value3 = new Vector4(3f, 5f, 7f, 9f);
            var     value4 = new Vector4(6f, 8f, 10f, 12f);
            float   amount = 0.6f;
            Vector4 result;

            for (int i = 0; i < times; i++)
            {
                Vector4.CatmullRom(ref value1, ref value2, ref value3, ref value4, amount, out result);
            }
        }
Ejemplo n.º 4
0
        public static Quaternion CatmullRom(Quaternion q0, Quaternion q1, Quaternion q2, Quaternion q3, float t)
        {
            Vector4 vector4 = Vector4.CatmullRom(new Vector4(q0.X, q0.Y, q0.Z, q0.W), new Vector4(q1.X, q1.Y, q1.Z, q1.W), new Vector4(q2.X, q2.Y, q2.Z, q2.W), new Vector4(q3.X, q3.Y, q3.Z, q3.W), t);

            return(Quaternion.Normalize(new Quaternion(vector4.X, vector4.Y, vector4.Z, vector4.W)));
        }