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