Truchet Tiles 003

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