Beispiel #1
0
        public void TestDistanceVec3()
        {
            var outputs  = Eval(() => Distance(vec3, vec3), V3fA, V3fB);
            var expected = V3fA.Zip(V3fB, (x, y) => (float)CpuLength(x.X - y.X, x.Y - y.Y, x.Z - y.Z));

            foreach (var x in outputs.Zip(expected, (x, y) => new Tuple <float, float>(x.X, y)))
            {
                Assert.That(x.Item1, Is.EqualTo(x.Item2).Within(MaxErr).Ulps);
            }
        }
Beispiel #2
0
        public void TestDotVec3()
        {
            var outputs  = Eval(() => Dot(vec3, vec3), V3fA, V3fB);
            var expected = V3fA.Zip(V3fB, (x, y) => x.X * y.X + x.Y * y.Y + x.Z * y.Z);

            foreach (var x in outputs.Zip(expected, (x, y) => new Tuple <float, float>(x.X, y)))
            {
                Assert.That(x.Item1, Is.EqualTo(x.Item2).Within(MaxErr).Ulps);
            }
        }
Beispiel #3
0
        public void TestCrossVec3()
        {
            var outputs  = Eval(() => Cross(vec3, vec3), V3fA, V3fB);
            var expected = V3fA.Zip(V3fB, (a, b) => new Vector4(a.Y * b.Z - a.Z * b.Y, a.Z * b.X - a.X * b.Z, a.X * b.Y - a.Y * b.X, 0.0f));

            foreach (var x in outputs.Zip(expected, (x, y) => new Tuple <Vector4, Vector4>(x, y)))
            {
                Assert.That(x.Item1.X, Is.EqualTo(x.Item2.X).Within(MaxErr).Ulps);
                Assert.That(x.Item1.Y, Is.EqualTo(x.Item2.Y).Within(MaxErr).Ulps);
                Assert.That(x.Item1.Z, Is.EqualTo(x.Item2.Z).Within(MaxErr).Ulps);
            }
        }
Beispiel #4
0
        public void TestPowVec3()
        {
            var outputs  = Eval(() => Pow(vec3, vec3), V3fA, V3fB);
            var expected = V3fA.Zip(V3fB, (a, b) => new Tuple <float, float, float>((float)Math.Pow(a.X, b.X), (float)Math.Pow(a.Y, b.Y), (float)Math.Pow(a.Z, b.Z)));

            foreach (var x in outputs.Zip(expected, (x, y) => new Tuple <Vector4, float, float, float>(x, y.Item1, y.Item2, y.Item3)))
            {
                Assert.That(x.Item1.X, Is.EqualTo(x.Item2).Within(MaxErr).Ulps);
                Assert.That(x.Item1.Y, Is.EqualTo(x.Item3).Within(MaxErr).Ulps);
                Assert.That(x.Item1.Z, Is.EqualTo(x.Item4).Within(MaxErr).Ulps);
            }
        }