Playing with Truchet Tiles
en.wikipedia.org/wiki/truchet_tiles
Log in to post a comment.
// Forked from "10Print" by rupertxrussell // https://turtletoy.net/turtle/188b93df20 // Released under the MIT licence // https://mit-license.org/ // you can use this for commercial gain if you like eg you can sell artworks with this image. // You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(1); // Global code will be evaluated once. const turtle = new Turtle(); const gap = 12; //min=1 max=12 step=1 const gridCount = 15; //min=1 max=20 step=1 const size = 11; //min=5 max=12 step=1 const xOffset = -90; //min=-100 max=80 step=1 const yOffset = -90; //min=-100 max=80 step=1 const outline = 0; //min=0 max=1 step=1 (No, Yes) // const type = 0; //min=0 max=1 step=1 (No, Yes) const type = 1; for(let x=0; x < gridCount; x++){ for(let y=0; y < gridCount; y++){ square((x * gap) + xOffset, (y * gap)+ yOffset); } } function square(x,y) { // Pick a random number let r = randomInRange(0, 2); turtle.penup(); turtle.goto(x,y); turtle.pendown(); if(outline === 1){ for(let i=0; i< 4; i++){ turtle.forward(size); turtle.right(90); } } turtle.penup(); switch(type) { case 0: // Original 10 Print Design just / or \ switch(r) { case 0: turtle.right(45); turtle.forward(size * Math.sqrt(2)); turtle.backward(size * Math.sqrt(2)); turtle.left(45); break; case 1: turtle.penup(); turtle.forward(size); turtle.pendown(); turtle.right(90 + 45); turtle.forward(size * Math.sqrt(2)); turtle.backward(size * Math.sqrt(2)); turtle.left(90 + 45); turtle.penup(); turtle.backward(size); break; default: // end of original 10 Print design code block } case(1): // Curved Truchet tile design switch(r) { case 0: // top left arc turtle.penup(); radius = size * 0.5; turtle.forward(size * 0.5); turtle.right(90); turtle.pendown(); turtle.circle(radius, extent = 90); turtle.penup(); turtle.circle(radius, extent = -90); turtle.left(90); turtle.backward(size * 0.5); // bottom right arc turtle.penup(); radius = size * 0.5; turtle.forward(size); turtle.right(90); turtle.forward(size); turtle.right(90); turtle.forward(size * 0.5); turtle.right(90); turtle.pendown(); turtle.circle(radius, extent = 90); turtle.penup(); turtle.circle(radius, extent = -90); turtle.left(90); turtle.backward(size * 0.5); turtle.left(90); turtle.backward(size); turtle.left(90); turtle.backward(size); break; case 1: turtle.forward(size); turtle.right(90); // top left arc turtle.penup(); radius = size * 0.5; turtle.forward(size * 0.5); turtle.right(90); turtle.pendown(); turtle.circle(radius, extent = 90); turtle.penup(); turtle.circle(radius, extent = -90); turtle.left(90); turtle.backward(size * 0.5); // bottom right arc turtle.penup(); radius = size * 0.5; turtle.forward(size); turtle.right(90); turtle.forward(size); turtle.right(90); turtle.forward(size * 0.5); turtle.right(90); turtle.pendown(); turtle.circle(radius, extent = 90); turtle.penup(); turtle.circle(radius, extent = -90); turtle.left(90); turtle.backward(size * 0.5); turtle.left(90); turtle.backward(size); turtle.left(90); turtle.backward(size); turtle.backward(size); turtle.left(90); break; default: // End of Curved Truchet tile design } } } function randomInRange(from, to) { var r = Math.random(); return Math.floor(r * (to - from) + from); }