Esempio n. 1
0
        public void IntersectingRayWithEmptyGroup()
        {
            var g  = new shape.Group();
            var r  = new Ray(pt.Point(0, 0, 0), pt.Vector(0, 0, 0));
            var xs = g.Intersect(r);

            Assert.Empty(xs);
        }
        public void IntersectingRayGrouTestChildrenIfBoxHit()
        {
            var child = new shape.TestShape();
            var shape = new shape.Group();

            shape.Add(child);
            var r = new Ray(pt.Point(0, 0, -5), pt.Vector(0, 0, 1));

            _ = shape.Intersect(r);
            Assert.NotNull(child.SavedRay);
        }
Esempio n. 3
0
        public void IntersectingATransformedGroup()
        {
            var g = new shape.Group(transform.Scaling(2, 2, 2));
            var s = new shape.Sphere(transform.Translation(5, 0, 0));

            g.Add(s);

            var r  = new Ray(pt.Point(10, 0, -10), pt.Vector(0, 0, 1));
            var xs = g.Intersect(r);

            Assert.Equal(2, xs.Count());
        }
Esempio n. 4
0
        public void IntersectingRayWithNonemptyGroup()
        {
            var g  = new shape.Group();
            var s1 = new shape.Sphere();
            var s2 = new shape.Sphere(transform.Translation(0, 0, -3));
            var s3 = new shape.Sphere(transform.Translation(5, 0, 0));

            g.Add(s1);
            g.Add(s2);
            g.Add(s3);

            var r  = new Ray(pt.Point(0, 0, -5), pt.Vector(0, 0, 1));
            var xs = g.Intersect(r);

            Assert.Equal(4, xs.Count());
            Assert.Equal(s2, xs[0].Object);
            Assert.Equal(s2, xs[1].Object);
            Assert.Equal(s1, xs[2].Object);
            Assert.Equal(s1, xs[3].Object);
        }