Exemplo n.º 1
0
        public void ReflectedColorForNonReflectiveMaterialIsBlack()
        {
            var w     = World.Default();
            var r     = new Ray(new Point(0, 0, 0), new Vector(0, 0, 1));
            var shape = w.Objects[1];

            shape.Material.Ambient = 1f;
            var i     = new Intersection(1, shape);
            var comps = new IntersectionInfo(i, r);

            PhongShading.ReflectedColor(w, comps).Should().Be(Colors.Black);
        }
Exemplo n.º 2
0
        public void ReflectedColorIsBlackIfRemainingBouncesIsZero()
        {
            var w     = World.Default();
            var shape = new Plane();

            shape.SetMaterial(new Material {
                Reflective = 0.5f
            });
            shape.SetTransform(Transform.Translate(0, -1, 0));
            w.AddObject(shape);
            var r     = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2f) / 2f, MathF.Sqrt(2f) / 2f));
            var i     = new Intersection(MathF.Sqrt(2f), shape);
            var comps = new IntersectionInfo(i, r);

            PhongShading.ReflectedColor(w, comps, 0).Should().Be(Colors.Black);
        }
Exemplo n.º 3
0
        public void ReflectedColorForReflectiveMaterialIsNotBlack()
        {
            var w     = World.Default();
            var shape = new Plane();

            shape.SetMaterial(new Material {
                Reflective = 0.5f
            });
            shape.SetTransform(Transform.Translate(0, -1, 0));
            w.AddObject(shape);
            var r     = new Ray(new Point(0, 0, -3), new Vector(0, -MathF.Sqrt(2f) / 2f, MathF.Sqrt(2f) / 2f));
            var i     = new Intersection(MathF.Sqrt(2f), shape);
            var comps = new IntersectionInfo(i, r);

            PhongShading.ReflectedColor(w, comps).Should().Be(new Color(0.19041f, 0.2380f, 0.14281f));
        }