public void TestPatternCheckerZ() { var pattern = new CheckersPattern(Color.White, Color.Black); Assert.AreEqual(pattern.PatternAt(Point.Zero), Color.White); Assert.AreEqual(pattern.PatternAt(new Point(0, 0, 0.99)), Color.White); Assert.AreEqual(pattern.PatternAt(new Point(0, 0, 1.01)), Color.Black); }
public void CheckersShouldRepeatInZ() { var pat = new CheckersPattern(white, black); Assert.Equal(white, pat.GetColor(Vector4.CreatePosition(0, 0, 0))); Assert.Equal(white, pat.GetColor(Vector4.CreatePosition(0, 0, 0.99))); Assert.Equal(black, pat.GetColor(Vector4.CreatePosition(0, 0, 1.01))); }
public void CheckersShouldExtendInZ() { var pattern = new CheckersPattern(Color.WHITE, Color.BLACK); Assert.AreEqual(Color.WHITE, pattern.PatternAt(new Point(0, 0, 0))); Assert.AreEqual(Color.WHITE, pattern.PatternAt(new Point(0, 0, 0.99))); Assert.AreEqual(Color.BLACK, pattern.PatternAt(new Point(0, 0, 1.01))); }
public void Pattern_Repeats_In_Z() { var pattern = new CheckersPattern(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, 0.99), unitSphere).ShouldBe(Color.White); pattern.ColorAt(new Point(0, 0, 1.01), unitSphere).ShouldBe(Color.Black); }
public void TestPatternCheckerPattern2D() { var checkers = new CheckersPattern(2, 2, Color.Black, Color.White); Assert.AreEqual(checkers.UVPatternAt(0.0, 0.0), Color.Black); Assert.AreEqual(checkers.UVPatternAt(0.5, 0.0), Color.White); Assert.AreEqual(checkers.UVPatternAt(0.0, 0.5), Color.White); Assert.AreEqual(checkers.UVPatternAt(0.5, 0.5), Color.Black); Assert.AreEqual(checkers.UVPatternAt(1.0, 1.0), Color.Black); }
public void TestPatternTextureMapPatternWithSphericalMap() { var checkers = new CheckersPattern(16, 8, Color.Black, Color.White); var pattern = new TextureMap(checkers, Mapping.Spherical); Assert.AreEqual(pattern.PatternAt(new Point(0.4315, 0.4670, 0.7719)), Color.White); Assert.AreEqual(pattern.PatternAt(new Point(-0.9654, 0.2552, -0.0534)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(0.1039, 0.7090, 0.6975)), Color.White); Assert.AreEqual(pattern.PatternAt(new Point(-0.4986, -0.7856, -0.3663)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(-0.0317, -0.9395, 0.3411)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(0.4809, -0.7721, 0.4154)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(0.0285, -0.9612, -0.2745)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(-0.5734, -0.2162, -0.7903)), Color.White); Assert.AreEqual(pattern.PatternAt(new Point(0.7688, -0.1470, 0.6223)), Color.Black); Assert.AreEqual(pattern.PatternAt(new Point(-0.7652, 0.2175, 0.6060)), Color.Black); }
public void T08_3DChecker() { Pattern pattern = new CheckersPattern(new SolidColorPattern(Color.white), new SolidColorPattern(Color.black)); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0, 0, 0))); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0.99, 0, 0))); Assert.AreEqual(Color.black, pattern.PatternAt(new Point(1.01, 0, 0))); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0, 0, 0))); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0, 0.99, 0))); Assert.AreEqual(Color.black, pattern.PatternAt(new Point(0, 1.01, 0))); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0, 0, 0))); Assert.AreEqual(Color.white, pattern.PatternAt(new Point(0, 0, 0.99))); Assert.AreEqual(Color.black, pattern.PatternAt(new Point(0, 0, 1.01))); }
private static void TestCase07() { // Checker should repeat in x Pattern pattern = new CheckersPattern(white, black); Assert.Equal(white, pattern.ColorAt(Tuple.Point(0, 0, 0))); Assert.Equal(white, pattern.ColorAt(Tuple.Point(0.99f, 0, 0))); Assert.Equal(black, pattern.ColorAt(Tuple.Point(1.01f, 0, 0))); // Checker should repeat in y Assert.Equal(white, pattern.ColorAt(Tuple.Point(0, 0, 0))); Assert.Equal(white, pattern.ColorAt(Tuple.Point(0, 0.99f, 0))); Assert.Equal(black, pattern.ColorAt(Tuple.Point(0, 1.01f, 0))); // Checker should repeat in z Assert.Equal(white, pattern.ColorAt(Tuple.Point(0, 0, 0))); Assert.Equal(white, pattern.ColorAt(Tuple.Point(0, 0, 0.99f))); Assert.Equal(black, pattern.ColorAt(Tuple.Point(0, 0, 1.01f))); }
private RTPattern BuildPattern(Values item) { RTPattern p = null; var type = item["type"]; var colors = item["colors"]; var transform = item["transform"]; var a = ConvertToColor(colors[0]); var b = ConvertToColor(colors[1]); switch (type.String.ToLower()) { case "stripes": p = new StripePattern(a, b); break; case "checkers": p = new CheckersPattern(a, b); break; //BlendedPattern //CheckersPattern //GradientPattern //NestedPattern //PerlinNoisePattern //RadialGradientPattern //RingPattern //SolidColorPattern //CubeMapPattern3D //CheckersPattern3D //UVImage //UVAlignCheck //TextureMap } if (!transform.IsEmpty) { p.Transform = BuildTransform(transform); } return(p); }
public static World Example3() { var world = new World(); var ringPattern1 = new RingPattern( new Color(0.4, 0.4, 0.4), new Color(0.7, 0.7, 0.7)) { Transform = Transform.Scale(4, 4, 4), }; var stripePattern1 = new StripePattern( new Color(0.2, 0.2, 0.2), new Color(0.5, 0.5, 1.0)) { Transform = Transform.Scale(0.1, 0.1, 0.1), }; var checkers = new CheckersPattern( Color.White, Color.Black) { Transform = Transform.Scale(1, 1, 1), }; var nestedPattern = new NestedPattern( checkers, ringPattern1, stripePattern1); var pertubedPattern = new PertubedPattern( new SolidPattern(Color.Black), new SolidPattern(new Color(0.1, 0.2, 0.3))) { Transform = Transform.Scale(5.5, 5.5, 5.5), }; var floor = new Plane { Material = new Material { Pattern = pertubedPattern, Specular = 0, }, }; world.Objects.Add(floor); var gradientTransform = Transform.Translate(1, 0, 0) * Transform.Scale(2, 1, 1); var sphere = new Sphere { Transform = Transform.Translate(0, 1, 0), Material = new Material { Pattern = new GradientPattern( new Color(1.0, 0.0, 0.0), new Color(0.0, 0.0, 1.0)) { Transform = gradientTransform, }, }, }; world.Objects.Add(sphere); var gradients = new[] { new GradientPattern( new Color(1.0, 0.0, 0.0), new Color(0.0, 0.0, 1.0)) { Transform = gradientTransform, }, new GradientPattern( new Color(1.0, 0.0, 0.0), new Color(0.0, 1.0, 0.0)) { Transform = gradientTransform, }, new GradientPattern( new Color(0.0, 1.0, 0.0), new Color(0.0, 0.0, 1.0)) { Transform = gradientTransform, }, new GradientPattern( new Color(0.5, 0.5, 0.0), new Color(0.0, 0.5, 0.5)) { Transform = gradientTransform, }, new GradientPattern( new Color(0.5, 0.0, 0.5), new Color(0.0, 1.0, 0.0)) { Transform = gradientTransform, }, }; const int n = 1024; var arc = 2 * Math.PI / n; for (var i = 0; i < n; i++) { const double r = 0.15; var gi = i % gradients.Length; var ni = (double)i / n; const double scatter = 15; var q = scatter * Rng.NextDouble(); var s = new Sphere { Transform = Transform.RotateY(i * arc) * Transform.Translate(0, r, 2 - r + q) * Transform.Scale(r, r, r), Material = new Material { Pattern = gradients[gi], }, }; world.Objects.Add(s); } var light = new PointLight( Vector4.CreatePosition(-10, 10, -10), Color.White); world.Lights.Add(light); return(world); }