Esempio n. 1
0
        public void ReflectedColorNonReflectiveMaterial()
        {
            var world = new DefaultWorld();
            var ray   = new Ray(Point.Zero, Vector.UnitZ);
            var shape = world.Shapes[1];

            shape.Material.Ambient = 1;

            var intersection = new Intersection(1, shape);
            var info         = new IntersectionInfo(new Intersections(intersection), intersection, ray);

            var actual = world.ReflectedColor(info, 0);

            Assert.Equal(Color.Black, actual);
        }
Esempio n. 2
0
        public void ReflectedColorMaxRecursiveDepth()
        {
            var world = new DefaultWorld();
            var plane = new Plane(
                Matrix4x4.Translation(0, -1, 0),
                new Material(reflective: 0.5f));

            world.Shapes.Add(plane);

            var ray          = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2) / 2, MathF.Sqrt(2) / 2));
            var intersection = new Intersection(MathF.Sqrt(2), plane);
            var info         = new IntersectionInfo(new Intersections(intersection), intersection, ray);

            var actual = world.ReflectedColor(info, 0);

            Assert.Equal(Color.Black, actual);
        }
Esempio n. 3
0
        public void ReflectedColorReflectiveMaterial()
        {
            var world = new DefaultWorld();
            var plane = new Plane(
                Matrix4x4.Translation(0, -1, 0),
                new Material(reflective: 0.5f));

            world.Shapes.Add(plane);

            var ray          = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2) / 2, MathF.Sqrt(2) / 2));
            var intersection = new Intersection(MathF.Sqrt(2), plane);
            var info         = new IntersectionInfo(new Intersections(intersection), intersection, ray);

            var actual = world.ReflectedColor(info, 1);

            Assert.Equal(new Color(0.19049118f, 0.23811397f, 0.1428684f), actual);
        }