예제 #1
0
        public void Stripes_With_An_Object_Transformation()
        {
            var pattern = new StripePattern(Color.White, Color.Black);
            var sphere  = new Sphere(Matrix4X4.CreateScale(2, 2, 2));

            pattern.ColorAt(new Point(1.5, 0, 0), sphere).ShouldBe(Color.White);
        }
        public void Ctor_should_store_the_two_colors_for_the_stripe()
        {
            var pattern = new StripePattern(Colors.White, Colors.Black);

            pattern.Pattern1.Should().BeEquivalentTo(new SolidColorPattern(Colors.White));
            pattern.Pattern2.Should().BeEquivalentTo(new SolidColorPattern(Colors.Black));
        }
예제 #3
0
        public void ColorAtShapeShapeTransformation()
        {
            var sphere  = new Sphere(Matrix4x4.Scaling(2, 2, 2));
            var pattern = new StripePattern(SolidPattern.White, SolidPattern.Black);

            Assert.Equal(Color.White, pattern.ColorAt(sphere, new Point(1.5f, 0, 0)));
        }
예제 #4
0
        public void CreateStripePattern()
        {
            var pat = new StripePattern(white, black);

            Assert.Equal(white, pat.A);
            Assert.Equal(black, pat.B);
        }
예제 #5
0
        public void StripePattern()
        {
            var p = new StripePattern(Color.White, Color.Black);

            Assert.That.VectorsAreEqual(p.A, Color.White);
            Assert.That.VectorsAreEqual(p.B, Color.Black);
        }
        public void Creating_a_stripe_pattern()
        {
            var pattern = new StripePattern(Color.White, Color.Black);

            Assert.AreEqual(Color.White, pattern.Color1);
            Assert.AreEqual(Color.Black, pattern.Color2);
        }
예제 #7
0
        public void ShouldCreateStripePattern()
        {
            var pattern = new StripePattern(VColor.White, VColor.Black);

            AssertActualEqualToExpected(pattern.A, VColor.White);
            AssertActualEqualToExpected(pattern.B, VColor.Black);
        }
예제 #8
0
        private static void TestCase04()
        {
            // Stripes with an object transformation
            Shape obj = new Sphere();

            obj.Transform = Transformation.Scaling(2, 2, 2);

            Pattern pattern = new StripePattern(white, black);

            Tuple c = pattern.ColorAtShape(obj, Tuple.Point(1.5f, 0, 0));

            Assert.Equal(white, c);

            // Stripes with a pattern transformation
            obj.Transform = Matrix.Identity();

            pattern.Transform = Transformation.Scaling(2, 2, 2);

            c = pattern.ColorAtShape(obj, Tuple.Point(1.5f, 0, 0));

            Assert.Equal(white, c);

            // Stripes with both an object and a pattern transformation
            obj.Transform = Transformation.Scaling(2, 2, 2);

            pattern.Transform = Transformation.Translation(0.5f, 0, 0);

            c = pattern.ColorAtShape(obj, Tuple.Point(2.5f, 0, 0));

            Assert.Equal(white, c);
        }
예제 #9
0
        public void T03_LightingPattern()
        {
            if (Scene.current != null)
            {
                Scene.current.Clear();
            }

            Sphere        sphere  = new Sphere();
            StripePattern pattern = new StripePattern(new SolidColorPattern(Color.white),
                                                      new SolidColorPattern(Color.black));
            Material material = new Material();

            material.pattern  = pattern;
            material.Ambient  = 1.0;
            material.Diffuse  = 0.0;
            material.Specular = 0.0;
            sphere.material   = material;
            Vector eye    = new Vector(0, 0, -1);
            Vector normal = new Vector(0, 0, -1);
            Light  light  = new Light(new Point(0, 0, -10), new Color(1, 1, 1));
            Color  c1     = sphere.Lighting(new Point(0.9, 0, 0), light, eye, normal, false);
            Color  c2     = sphere.Lighting(new Point(1.1, 0, 0), light, eye, normal, false);

            Assert.AreEqual(Color.white, c1);
            Assert.AreEqual(Color.black, c2);
        }
예제 #10
0
        public void T04_StripeTransformation()
        {
            if (Scene.current != null)
            {
                Scene.current.Clear();
            }

            Sphere sphere = new Sphere();

            sphere.SetMatrix(Mat4.ScaleMatrix(2, 2, 2));
            StripePattern pattern = new StripePattern(new SolidColorPattern(Color.white),
                                                      new SolidColorPattern(Color.black));
            Color color = pattern.PatternAtObject(sphere, new Point(1.5, 0, 0));

            Assert.AreEqual(Color.white, color);

            sphere.SetMatrix(new Mat4());
            pattern.matrix = Mat4.ScaleMatrix(2, 2, 2);
            color          = pattern.PatternAtObject(sphere, new Point(1.5, 0, 0));
            Assert.AreEqual(Color.white, color);

            sphere.SetMatrix(Mat4.ScaleMatrix(2, 2, 2));
            pattern.matrix = Mat4.TranslateMatrix(0.5, 0, 0);
            color          = pattern.PatternAtObject(sphere, new Point(2.5, 0, 0));
            Assert.AreEqual(Color.white, color);
        }
        public void CreatingAStripePattern()
        {
            var pattern = new StripePattern(Color.WHITE, Color.BLACK);

            Assert.AreEqual(Color.WHITE, pattern.a);
            Assert.AreEqual(Color.BLACK, pattern.b);
        }
예제 #12
0
        public void TestPatternCreate()
        {
            var pattern = new StripePattern(Color.White, Color.Black);

            Assert.AreEqual(pattern.a, Color.White);
            Assert.AreEqual(pattern.b, Color.Black);
        }
        public void CreatingStripePattern()
        {
            var pattern = new StripePattern(ColourFactory.Black, ColourFactory.White);

            Assert.AreEqual(ColourFactory.Black, pattern.A);
            Assert.AreEqual(ColourFactory.White, pattern.B);
        }
        public void StripPatternIsConstantZ()
        {
            var pattern = new StripePattern(ColourFactory.White, ColourFactory.Black);

            Assert.AreEqual(ColourFactory.White, pattern.PatternAt(new Point(0, 0, 0)));
            Assert.AreEqual(ColourFactory.White, pattern.PatternAt(new Point(0, 0, 1)));
            Assert.AreEqual(ColourFactory.White, pattern.PatternAt(new Point(0, 0, 2)));
        }
예제 #15
0
        private static void TestCase01()
        {
            // Creating a stripe pattern
            StripePattern pattern = new StripePattern(white, black);

            Assert.Equal(white, pattern.FirstColor);
            Assert.Equal(black, pattern.SecondColor);
        }
예제 #16
0
        public void T01_StripePattern()
        {
            StripePattern pattern = new StripePattern(new SolidColorPattern(Color.white),
                                                      new SolidColorPattern(Color.black));

            Assert.AreEqual(Color.white, pattern.a.PatternAt(new Point()));
            Assert.AreEqual(Color.black, pattern.b.PatternAt(new Point()));
        }
        public void ColorAt_should_return_the_same_color_for_every_z_coordinate()
        {
            var pattern = new StripePattern(Colors.White, Colors.Black);

            pattern.ColorAt(new Point(0, 0, 0)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(0, 0, 1)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(0, 0, 2)).Should().Be(Colors.White);
        }
예제 #18
0
        public void StripesEverythingTransformed()
        {
            var s = new Sphere(Scale(2f));
            var p = new StripePattern(Color.White, Color.Black, Scale(2f));
            var c = p.ColorAtEntity(s, Point(1.5f, 0f, 0f));

            Assert.That.VectorsAreEqual(c, Color.White);
        }
        public void A_stripe_pattern_is_constant_in_z()
        {
            var pattern = new StripePattern(Color.White, Color.Black);

            Assert.AreEqual(Color.White, pattern.ColorAt(Tuple.Point(0, 0, 0)));
            Assert.AreEqual(Color.White, pattern.ColorAt(Tuple.Point(0, 0, 1)));
            Assert.AreEqual(Color.White, pattern.ColorAt(Tuple.Point(0, 0, 2)));
        }
예제 #20
0
        public void TestPatternZ()
        {
            var pattern = new StripePattern(Color.White, Color.Black);

            Assert.AreEqual(pattern.PatternAt(Point.Zero), Color.White);
            Assert.AreEqual(pattern.PatternAt(Point.PointZ), Color.White);
            Assert.AreEqual(pattern.PatternAt(new Point(0, 0, 2)), Color.White);
        }
예제 #21
0
        public void Constructor()
        {
            var pattern = new StripePattern();

            Assert.Equal(2, pattern.Patterns.Length);
            Assert.Equal(Color.White, ((SolidPattern)pattern.Patterns[0]).Color);
            Assert.Equal(Color.Black, ((SolidPattern)pattern.Patterns[1]).Color);
        }
예제 #22
0
        public void ColorAtZDirection()
        {
            var pattern = new StripePattern();

            Assert.Equal(Color.White, pattern.ColorAt(new Sphere(), new Point(0, 0, 0)));
            Assert.Equal(Color.White, pattern.ColorAt(new Sphere(), new Point(0, 0, 1)));
            Assert.Equal(Color.White, pattern.ColorAt(new Sphere(), new Point(0, 0, 2)));
        }
예제 #23
0
        public void StripePatternIsConstantInZ()
        {
            var pat = new StripePattern(white, black);

            Assert.Equal(white, pat.GetColor(Vector4.CreatePosition(0, 0, 0)));
            Assert.Equal(white, pat.GetColor(Vector4.CreatePosition(0, 0, 1)));
            Assert.Equal(white, pat.GetColor(Vector4.CreatePosition(0, 0, 2)));
        }
예제 #24
0
        public void StripePatternShouldAlternateInX(float x, bool shouldBeWhite)
        {
            var pattern = new StripePattern(VColor.White, VColor.Black);

            AssertActualEqualToExpected(
                pattern.GetColorAt(CreatePoint(x, 0, 0)),
                shouldBeWhite ? VColor.White : VColor.Black);
        }
예제 #25
0
        public void StripePatternConstantInZ()
        {
            var p = new StripePattern(Color.White, Color.Black);

            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 0f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 1f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 2f)), Color.White);
        }
예제 #26
0
        public void Pattern_Is_Constant_In_Z_Axis()
        {
            var pattern    = new StripePattern(Color.White, Color.Black);
            var unitSphere = new Sphere();

            pattern.ColorAt(new Point(0, 0, 0), unitSphere).ShouldBe(Color.White);
            pattern.ColorAt(new Point(0, 0, 1), unitSphere).ShouldBe(Color.White);
            pattern.ColorAt(new Point(0, 0, 2), unitSphere).ShouldBe(Color.White);
        }
        public void AStripePatternIsConstantInY()
        {
            var shape   = new Sphere();
            var pattern = new StripePattern(Color.WHITE, Color.BLACK);

            Assert.AreEqual(Color.WHITE, pattern.PatternAtObject(shape, new Point(0, 0, 0)));
            Assert.AreEqual(Color.WHITE, pattern.PatternAtObject(shape, new Point(0, 1, 0)));
            Assert.AreEqual(Color.WHITE, pattern.PatternAtObject(shape, new Point(0, 2, 0)));
        }
예제 #28
0
        public void Stripe_With_Pattern_Transformation()
        {
            var pattern = new StripePattern(Color.White, Color.Black)
            {
                TransformMatrix = Matrix4X4.CreateScale(2, 2, 2),
            };

            pattern.ColorAt(new Point(1.5, 0, 0), new Sphere()).ShouldBe(Color.White);
        }
        public void ColorAt_should_alternate_colors_with_x_coordinates()
        {
            var pattern = new StripePattern(Colors.White, Colors.Black);

            pattern.ColorAt(new Point(0, 0, 0)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(0.9, 0, 0)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(1, 0, 0)).Should().Be(Colors.Black);
            pattern.ColorAt(new Point(-0.1, 0, 0)).Should().Be(Colors.Black);
            pattern.ColorAt(new Point(-1.1, 0, 0)).Should().Be(Colors.White);
        }
예제 #30
0
        public void StripePatternAlternatesInZ()
        {
            var p = new StripePattern(Color.White, Color.Black);

            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 0f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(.9f, 0f, 0f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(1f, 0f, 0f)), Color.Black);
            Assert.That.VectorsAreEqual(p.At(Point(-1f, 0f, 0f)), Color.Black);
            Assert.That.VectorsAreEqual(p.At(Point(-.1f, 0f, 0f)), Color.Black);
            Assert.That.VectorsAreEqual(p.At(Point(-1.1f, 0f, 0f)), Color.White);
        }