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); }
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); } }
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"); }