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))); }
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))); }
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); }
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); }
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]); }