Thanks to Dan Catt see:
youtu.be/1qlwiyrdeom?feature=shared&t=61
Log in to post a comment.
// Forked from "Truchet Tiles 002" by rupertxrussell
// https://turtletoy.net/turtle/d30c466e56
// Forked from "Truchet Tiles 001" by rupertxrussell
// https://turtletoy.net/turtle/ea4178a3db
// My first Turchet Tiles
// inspired by Rev Dan Catt 70's Pop
// https://shop.revdancatt.com/collections/pen-plots/products/70s-pop-tiles-a3-64-up-2
// https://www.youtube.com/watch?v=1QLWiyrDEOM
// 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 nTiles = 16; // min=8 max=16 step=1
const scale = 12; // min=2 max=24.5 step=0.25
const margin = 0; // min=0 max=4.25 step=0.25
const drawBorders = 0; // min=0 max=1 step=1 (No, Yes)
const chanceOfLines = 50; // min=0 max=50 step=1
for(var i = nTiles * -0.5; i < nTiles * 0.5; i++){
for(var j =nTiles * -0.5; j < nTiles * 0.5; j++){
rand = getRandomInt(6);
// rand = a;
if(rand == 0){
turtle.jump(i * scale, j * scale)
turtle.penup();
turtle.forward(margin * i);
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
square(1)
}
if(rand == 1){
turtle.jump(i * scale, j * scale);
turtle.penup();
turtle.forward(margin * i);
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
turtle.forward(scale) // reposition
turtle.right(90);
square(1)
turtle.penup();
turtle.left(90);
turtle.back(scale) // reposition
}
if(rand == 2){
turtle.jump(i * scale, j * scale);
turtle.penup();
turtle.forward(margin * i);
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
turtle.right(180);
turtle.jump(turtle.xcor()+scale, turtle.ycor()+scale);
square(1)
turtle.left(180);
}
if(rand == 3){
turtle.jump(i * scale, j * scale);
turtle.penup();
turtle.forward(margin * i)
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
turtle.right(270);
turtle.jump(turtle.xcor(), turtle.ycor()+scale);
square(1)
turtle.left(270);
}
if(rand == 4){
// 8 vertical lines
turtle.jump(i * scale, j * scale)
turtle.penup();
turtle.forward(margin * i);
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
// modify chance of drawing paralel lines
chance = getRandomInt(chanceOfLines);
if(chance >= 1){
square(2);
}
else if (chance <=1){
square(1);
}
}
if(rand == 5){
// horizontal lines
turtle.jump(i * scale, j * scale);
turtle.penup();
turtle.forward(margin * i);
turtle.right(90);
turtle.forward(margin * j)
turtle.left(90);
turtle.forward(scale) // reposition
turtle.right(90);
// modify chance of drawing paralel lines
chance = getRandomInt(chanceOfLines);
if(chance >= 1){
square(2);
}
else if (chance <=1){
square(1);
}
turtle.penup();
turtle.left(90);
turtle.back(scale) // reposition
}
}
}
function square(n) {
turtle.pendown();
// Square type 1
if(n==1){
for(var n=1; n<9; n++){
// draw 8 arcs
turtle.penup();
turtle.forward(scale/8);
turtle.right(90);
turtle.pendown();
turtle.circle(scale/8*n, 90);
turtle.penup();
turtle.circle(scale/8*n, -90);
turtle.left(90);
}
// finish square
if(drawBorders == 1){
turtle.pendown();
}
for(var sides = 0; sides <4; sides++ ){
turtle.right(90);
turtle.forward(scale);
}
// move to SE corner
turtle.penup();
turtle.right(90);
turtle.forward(scale);
// first small arc
turtle.left(270);
for(var n=1; n<4; n++){
// draw 3 full small arcs
turtle.penup();
turtle.forward(scale/8);
turtle.right(90);
turtle.pendown();
turtle.circle(scale/8*n, 90);
turtle.penup();
turtle.circle(scale/8*n, -90); // reverse arc to edge
turtle.left(90);
}
// South 1st half arc
turtle.forward(scale/8);
turtle.right(90);
turtle.pendown();
turtle.circle(scale/8*4, 17);
turtle.penup();
turtle.circle(scale/8*4, -17); // reverse arc to edge
turtle.left(90);
turtle.pendown();
// east 1st half arc
turtle.penup();
turtle.right(180);
turtle.forward(4 * scale/8);
turtle.left(90);
turtle.forward(4 * scale/8)
turtle.left(270);
turtle.pendown();
turtle.circle(scale/8*4,-17);
turtle.penup();
turtle.circle(scale/8*4, 17); // reverse arc to edge
turtle.right(270);
turtle.penup();
// east 2nd half arc
turtle.penup();
turtle.forward(scale/8);
turtle.left(270);
turtle.pendown()
turtle.circle(scale/8*5, -6.8);
turtle.circle(scale/8*5, 6.8); // reverse arc to edge
// start east 3rd half arc
turtle.left(90);
turtle.penup();
turtle.forward(scale/8);
turtle.left(270);
turtle.pendown();
turtle.circle(scale/8*6, -2.42);
turtle.circle(scale/8*6, 2.42); // reverse arc to edge
// end 3rd half arc
// start of south 2rd half arc
// move around the square to start pos
turtle.penup();
turtle.right(90)
turtle.forward(6* scale/8);
turtle.right(90)
turtle.forward(5* scale/8);
turtle.pendown()
turtle.right(90);
turtle.pendown()
turtle.circle(scale/8*5, 6.8);
turtle.penup();
turtle.circle(scale/8*5, -6.8);
// start of south 3rd half arc
// move around the square to start pos
turtle.penup();
turtle.left(90);
turtle.forward(scale/8);
turtle.right(270);
turtle.pendown();
turtle.circle(scale/8*6, -2.42);
turtle.circle(scale/8*6, 2.42)
// start of south 4rd half arc
// move around the square to start pos
turtle.penup();
turtle.right(90);
turtle.forward(scale/8);
turtle.right(270);
turtle.pendown();
turtle.circle(scale/8*6, -0.6); // -0.4
turtle.circle(scale/8*6, 0.6)
// start of east 4rd half arc
// move around the square to start pos
turtle.penup();
turtle.right(90);
turtle.forward(scale/8);
turtle.right(270);
turtle.pendown();
turtle.circle(scale/8*6, -0.6); // -0.4
turtle.circle(scale/8*6, 0.6)
turtle.right(90);
turtle.right(90);
turtle.right(90);
} // end of square type 1
// Square type 2 parallel lines
if(n==2){
if(drawBorders == 0){
numOfLines = 10;
}
else if(drawBorders == 1){
numOfLines = 9;
}
for(var n=1; n<numOfLines; n++){
// draw parallel lines
turtle.right(90);
turtle.pendown();
turtle.forward(scale);
turtle.penup();
turtle.back(scale);
turtle.left(90);
turtle.penup();
turtle.forward(scale/8);
}
// finish square
if(drawBorders == 1){
turtle.pendown();
}
for(var sides = 0; sides <4; sides++ ){
turtle.right(90);
turtle.forward(scale);
}
}
} // end of function Square
function drawTurtle(turtleScale){
var originalHeading =turtle.heading();
turtle.pendown();
turtle.right(160);
turtle.forward(turtleScale*.25);
turtle.back(turtleScale*.25);
turtle.left(160 *2);
turtle.forward(turtleScale*.25);
turtle.back(turtleScale*.25);
turtle.seth(originalHeading);
turtle.penup();
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}