public void Vector4_BarycentricCalculatedCorrectly()
        {
            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 result = Vector4.Barycentric(vector1, vector2, vector3, 0.75f, 0.22f);

            TheResultingValue(result).WithinDelta(0.1f)
            .ShouldBe(272.13f, -92.19f, 219.0f, 243.09f);
        }
Beispiel #2
0
        public static void BarycentricRef(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);
            float   amount1 = 0.3f;
            float   amount2 = 0.6f;
            Vector4 result;

            for (int i = 0; i < times; i++)
            {
                Vector4.Barycentric(ref value1, ref value2, ref value3, amount1, amount2, out result);
            }
        }
Beispiel #3
0
        public void BarycentricTest()
        {
            Vector4 expected;

            expected = new Vector4(174.2175f, -454.0052f, -147.8177f, 141.2125f);
            Assert.IsTrue(TestHelper.ApproximatelyEquals(expected, Vector4.Barycentric(a, b, c, 2.124215f, -1.326262f)), "#1");

            expected = new Vector4(-263.8197f, 746.7805f, 258.9753f, -235.7217f);
            Assert.IsTrue(TestHelper.ApproximatelyEquals(expected, Vector4.Barycentric(b, c, a, 2.124215f, -1.326262f)), "#2");

            // Test 3
            // Check if its implementation uses MathHelper
            Vector4 v1 = Vector4.Barycentric(a, b, c, -0.5f, 6.78f);
            Vector4 v2 = new Vector4(
                MathHelper.Barycentric(a.X, b.X, c.X, -0.5f, 6.78f),
                MathHelper.Barycentric(a.Y, b.Y, c.Y, -0.5f, 6.78f),
                MathHelper.Barycentric(a.Z, b.Z, c.Z, -0.5f, 6.78f),
                MathHelper.Barycentric(a.W, b.W, c.W, -0.5f, 6.78f));

            Assert.IsTrue(v1 == v2, "Barycentric#3");
        }