Пример #1
0
        public void TestCheckerZ()
        {
            var pattern = new CheckerPattern(_white, _black);

            Assert.AreEqual(_white, pattern.ColorAt(Tuple.Point(0, 0, 0)));
            Assert.AreEqual(_white, pattern.ColorAt(Tuple.Point(0, 0, 0.99)));
            Assert.AreEqual(_black, pattern.ColorAt(Tuple.Point(0, 0, 1.01)));
        }
Пример #2
0
        public void ShouldRepeatInEachDirectionForCheckersPattern(float x, float y, float z, bool expectingWhite)
        {
            var pattern = new CheckerPattern(VColor.White, VColor.Black);

            AssertActualEqualToExpected(
                pattern.GetColorAt(CreatePoint(x, y, z)),
                expectingWhite ? VColor.White : VColor.Black);
        }
        public void Checkers_should_repeat_in_z()
        {
            var pattern = new CheckerPattern(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, 0.99)));
            Assert.AreEqual(Color.Black, pattern.ColorAt(Tuple.Point(0, 0, 1.01)));
        }
Пример #4
0
        public void CheckerPatternZ()
        {
            var p = new CheckerPattern(Color.White, Color.Black);

            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 0f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, .99f)), Color.White);
            Assert.That.VectorsAreEqual(p.At(Point(0f, 0f, 1.01f)), Color.Black);
        }
        public void ColorAt_should_repeat_in_z()
        {
            var pattern = new CheckerPattern(Colors.White, Colors.Black);

            pattern.ColorAt(new Point(0, 0, 0)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(0, 0, 0.99)).Should().Be(Colors.White);
            pattern.ColorAt(new Point(0, 0, 1.01)).Should().Be(Colors.Black);
        }
Пример #6
0
        public void CheckersRepeatZ()
        {
            Pattern black = new SolidPattern(Color.Black);
            Pattern white = new SolidPattern(Color.White);

            CheckerPattern pattern = new CheckerPattern(white, black);

            Assert.True(Color.White == pattern.PatternAt(new Point(0, 0, 0)));
            Assert.True(Color.White == pattern.PatternAt(new Point(0, 0, .99f)));
            Assert.True(Color.Black == pattern.PatternAt(new Point(0, 0, 1.01f)));
        }
        public void BasicTest()
        {
            var pattern = new CheckerPattern(Color.White, Color.Black);

            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0.99, 0, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(1.01, 0, 0))).IsEqualTo(Color.Black);

            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0.99, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0, 1.01, 0))).IsEqualTo(Color.Black);

            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 0.99))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 1.01))).IsEqualTo(Color.Black);

            Check.That(pattern.GetColor(Helper.CreatePoint(0, 0, 0))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(0.99, 0, 0.99))).IsEqualTo(Color.White);
            Check.That(pattern.GetColor(Helper.CreatePoint(1.01, 1.01, 1.01))).IsEqualTo(Color.Black);
        }
Пример #8
0
        protected override Canvas Render(CameraRenderOptions options)
        {
            // Patterns
            var checkerPattern = new CheckerPattern(
                new StripePattern(
                    Colors.LightGray,
                    Colors.Gray,
                    Matrix4x4.CreateScaling(0.25, 0.25, 0.25).RotateY(-Math.PI / 8)),
                new GradientPattern(new Color(1, 0.75, 0.75), new Color(1, 0.5, 0.5)),
                Matrix4x4.CreateScaling(0.4, 0.4, 0.4));

            var blendedPattern = new BlendedPattern(
                new StripePattern(new Color(0.9, 1, 0.9), new Color(0, 1, 0), Matrix4x4.CreateRotationY(Math.PI / 2)),
                new StripePattern(new Color(0.9, 1, 0.9), new Color(0, 1, 0)),
                0.5);

            var stripePattern = new StripePattern(
                new GradientPattern(new Color(0.8, 0.8, 1), Colors.Blue),
                new GradientPattern(Colors.Blue, new Color(0.8, 0.8, 1)),
                Matrix4x4.CreateScaling(0.25, 0.25, 0.25)
                .RotateZ(-Math.PI / 4)
                .RotateY(-Math.PI / 6)
                .Translate(0.4, 0, 0));

            var gradientPattern = new RadialGradientPattern(
                Colors.Green,
                Colors.Yellow,
                Matrix4x4.CreateScaling(0.25, 0.25, 0.25).RotateX(-Math.PI / 2));

            var ringPattern = new RingPattern(
                Colors.Red,
                Colors.White,
                Matrix4x4.CreateScaling(0.15, 0.15, 0.15).RotateX(-Math.PI / 2));

            // Shapes
            var floor = new Plane(
                "Floor",
                Matrix4x4.CreateRotationY(Math.PI / 4),
                new Material(pattern: blendedPattern, specular: 0));

            var backWall = new Plane(
                "BackWall",
                Matrix4x4.CreateRotationX(Math.PI / 2).Translate(0, 0, 5),
                new Material(pattern: checkerPattern));

            var left = new Sphere(
                "Left",
                Matrix4x4.CreateScaling(0.33, 0.33, 0.33).Translate(-2, 0.33, -0.75),
                new Material(pattern: ringPattern, diffuse: 0.7, specular: 0.3));

            var middle = new Sphere(
                "Middle",
                Matrix4x4.CreateTranslation(-0.5, 1, 0.5),
                new Material(pattern: stripePattern, diffuse: 0.7, specular: 0.3));

            var right = new Sphere(
                "Right",
                Matrix4x4.CreateScaling(0.5, 0.5, 0.5).Translate(1.5, 0.5, -0.5),
                new Material(pattern: gradientPattern, diffuse: 0.7, specular: 0.3));

            var light = new PointLight(new Point(-10, 10, -10), Colors.White);
            var world = new World(light, floor, backWall, left, middle, right);

            var cameraTransform = Matrix4x4.CreateLookAt(new Point(0, 1.5, -5), new Point(0, 1, 0), Vector.UnitY);
            var camera          = new Camera(CanvasWidth, CanvasHeight, Math.PI / 3, cameraTransform);

            Canvas canvas = camera.Render(world, options);

            return(canvas);
        }
 public void Given_checkers_pattern(string id, string aId, string bId)
 {
     patterns[id] = new CheckerPattern(colors[aId], colors[bId]);
 }