Exemplo n.º 1
0
        public void NormalsAreNormalized()
        {
            var s = new TestGeometry();
            var n = s.NormalAt(new Point(MathF.Sqrt(3f) / 3f, MathF.Sqrt(3f) / 3f, MathF.Sqrt(3f) / 3f),
                               new Intersection(1f, s));

            (n == n.Normalize()).Should().BeTrue();
        }
Exemplo n.º 2
0
        public void CanChangeTransform()
        {
            var s = new TestGeometry();
            var t = Transform.Translate(2, 3, 4);

            s.SetTransform(t);
            s.Transform.Should().Be(t);
        }
Exemplo n.º 3
0
        public void AddingChildToGroupAssignsGroupAsParent()
        {
            var g = new Group();
            var s = new TestGeometry();

            g.AddChild(s);
            s.Parent.Should().Be(g);
            g.Children.Should().OnlyContain(c => c == s);
        }
Exemplo n.º 4
0
        public void NormalOnTransformedShape()
        {
            var s = new TestGeometry();

            s.SetTransform(Transform.Scale(1f, 0.5f, 1f) * Transform.RotateZ(MathF.PI / 5f));
            var n = s.NormalAt(new Point(0, MathF.Sqrt(2f) / 2f, -MathF.Sqrt(2f) / 2f), new Intersection(1f, s));

            n.Should().Be(new Normal(0, 0.97014f, -0.24254f));
        }
Exemplo n.º 5
0
        public void NormalOnTranslatedShape()
        {
            var s = new TestGeometry();

            s.SetTransform(Transform.Translate(0, 1, 0));
            var n = s.NormalAt(new Point(0, 1.70711f, -0.70711f), new Intersection(1f, s));

            n.Should().Be(new Normal(0, 0.70711f, -0.70711f));
        }
Exemplo n.º 6
0
        public void IntersectTestChildrenIfRayHitsBounds()
        {
            var c = new TestGeometry();
            var g = new Group();

            g.AddChild(c);
            var r  = new Ray(new Point(0, 0, -5), new Vector(0, 0, 1));
            var xs = g.Intersects(r);

            // Child tested so SavedRay in not default.
            c.SavedRay.Should().NotBe(new Ray());
        }
Exemplo n.º 7
0
        public void IntersectDoesNotTestChildrenIfRayMissesBounds()
        {
            var c = new TestGeometry();
            var g = new Group();

            g.AddChild(c);
            var r  = new Ray(new Point(0, 0, -5), new Vector(0, 1, 0));
            var xs = g.Intersects(r);

            // Child not tested so SavedRay remains default.
            c.SavedRay.Should().Be(new Ray());
        }
Exemplo n.º 8
0
        public void IntersectTestChildrenIfRayHitsBounds()
        {
            var l   = new TestGeometry();
            var r   = new TestGeometry();
            var s   = new ConstructiveSolid(ConstructiveOp.Difference, l, r);
            var ray = new Ray(new Point(0, 0, -5), new Vector(0, 0, 1));
            var xs  = s.Intersects(ray);

            // Child tested so SavedRay in not default.
            l.SavedRay.Should().NotBe(new Ray());
            r.SavedRay.Should().NotBe(new Ray());
        }
Exemplo n.º 9
0
        public void IntersectDoesNotTestChildrenIfRayMissesBounds()
        {
            var l   = new TestGeometry();
            var r   = new TestGeometry();
            var s   = new ConstructiveSolid(ConstructiveOp.Difference, l, r);
            var ray = new Ray(new Point(0, 0, -5), new Vector(0, 1, 0));
            var xs  = s.Intersects(ray);

            // Child not tested so SavedRay remains default.
            l.SavedRay.Should().Be(new Ray());
            r.SavedRay.Should().Be(new Ray());
        }
Exemplo n.º 10
0
        public void IntersectingTranslatedShapeWithRay()
        {
            var r = new Ray(new Point(0, 0, -5), new Vector(0, 0, 1));
            var s = new TestGeometry();
            var t = Transform.Translate(5, 0, 0);

            s.SetTransform(t);
            // ReSharper disable once UnusedVariable
            var xs = s.Intersects(r);

            s.SavedRay.Origin.Should().Be(new Point(-5, 0, -5f));
            s.SavedRay.Direction.Should().Be(new Vector(0, 0, 1f));
        }
Exemplo n.º 11
0
        public void DefaultTransformIsIdentity()
        {
            var s = new TestGeometry();

            s.Transform.Should().Be(Transform.Identity);
        }
Exemplo n.º 12
0
        public void HasNoParentByDefault()
        {
            var s = new TestGeometry();

            s.Parent.Should().BeNull();
        }
Exemplo n.º 13
0
        public void IsShape()
        {
            var s = new TestGeometry();

            s.Should().BeAssignableTo <IGeometry>();
        }