コード例 #1
0
        public void Normalization_values()
        {
            var v    = Toople.Vector(1f, 2f, 3f);
            var sqrt = MathF.Sqrt(14f);

            v.Normalize().Should().BeEquivalentTo(
                Toople.Vector(1f / sqrt, 2f / sqrt, 3f / sqrt));
        }
コード例 #2
0
        public void CrossProduct()
        {
            var a = Toople.Vector(1f, 2f, 3f);
            var b = Toople.Vector(2f, 3f, 4f);

            a.Cross(b).Should().BeEquivalentTo(Toople.Vector(-1f, 2f, -1f));
            b.Cross(a).Should().BeEquivalentTo(Toople.Vector(1f, -2f, 1f));
        }
コード例 #3
0
        public void AddingTuples()
        {
            var point  = Toople.Point(3f, -2f, 5f);
            var vector = Toople.Vector(-2f, 3f, 1f);

            var result = point + vector;

            result.Should().BeEquivalentTo(new Toople(1f, 1f, 6f, 1f));
        }
コード例 #4
0
        public void DotProduct()
        {
            var a = Toople.Vector(1f, 2f, 3f);
            var b = Toople.Vector(2f, 3f, 4f);

            var result = a.Dot(b);

            result.Should().BeApproximately(20, float.Epsilon);
        }
コード例 #5
0
        public void Subtracting_fromZeroVector()
        {
            var zero = Toople.Vector(0, 0, 0);
            var v    = Toople.Vector(1f, -2f, 3f);

            var result = zero - v;

            result.Should().BeEquivalentTo(Toople.Vector(-1f, 2f, -3f));
        }
コード例 #6
0
        public void Subtracting_twoVectors()
        {
            var vectorA = Toople.Vector(3f, 2f, 1f);
            var vectorB = Toople.Vector(5f, 6f, 7f);

            var result = vectorA - vectorB;

            result.Should().BeEquivalentTo(Toople.Vector(-2f, -4f, -6f));
        }
コード例 #7
0
        public void Subtracting_vectorFromPoint()
        {
            var point  = Toople.Point(3f, 2f, 1f);
            var vector = Toople.Vector(5f, 6f, 7f);

            var result = point - vector;

            result.Should().BeEquivalentTo(Toople.Point(-2f, -4f, -6f));
        }
コード例 #8
0
        public void Subtracting_twoPoints()
        {
            var pointA = Toople.Point(3f, 2f, 1f);
            var pointB = Toople.Point(5f, 6f, 7f);

            var result = pointA - pointB;

            result.Should().BeEquivalentTo(Toople.Vector(-2f, -4f, -6f));
        }
コード例 #9
0
        public void EqualsWorks()
        {
            var point = Toople.Point(1f, 2f, 3f);

            point.Should().BeEquivalentTo(new Toople(1f, 2f, 3f, 1f));

            var p2 = Toople.Point(1f, 2f, 3f);

            point.Equals(p2).Should().BeTrue();

            var vector = Toople.Vector(1f, 2f, 3f);

            point.Equals(vector).Should().BeFalse();
        }
コード例 #10
0
        static void Main(string[] args)
        {
            var projectile = new Projectile(
                Toople.Point(0, 1f, 0),
                Toople.Vector(1f, 1f, 1f).Normalize() * 4
                );

            var environment = new Environment(
                Toople.Vector(0, -0.1f, 0),
                Toople.Vector(-0.01f, 0, 0));

            var simulation = new Simulation(environment, projectile);
            var ticks      = simulation.Run();

            Console.WriteLine($"IMPACT! in {ticks} ticks");
        }
コード例 #11
0
        public void Vector_CreatesVector()
        {
            var vector = Toople.Vector(1f, 2f, 3f);

            vector.IsVector.Should().BeTrue();
        }
コード例 #12
0
        public void NormalizedMagnitude_isOne(float x, float y, float z)
        {
            var normalize = Toople.Vector(x, y, z).Normalize();

            normalize.Magnitude.Should().BeApproximately(1f, (float)1e-5);
        }
コード例 #13
0
        public void Normalization_simpleCase()
        {
            var v = Toople.Vector(4f, 0, 0);

            v.Normalize().Should().BeEquivalentTo(Toople.Vector(1f, 0, 0));
        }
コード例 #14
0
        public void Magnitude_negatives()
        {
            var v = Toople.Vector(1f, -2f, -3f);

            v.Magnitude.Should().BeApproximately(MathF.Sqrt(14f), float.Epsilon);
        }
コード例 #15
0
        public void Magnitude_simpleCase()
        {
            var v = Toople.Vector(1f, 2f, 3f);

            v.Magnitude.Should().BeApproximately(MathF.Sqrt(14f), float.Epsilon);
        }
コード例 #16
0
        public void Magnitude_identities(float x, float y, float z, float magnitude)
        {
            var v = Toople.Vector(x, y, z);

            v.Magnitude.Should().BeApproximately(magnitude, float.Epsilon);
        }