// Clastic Cretan 7 Circuit Labyrinth
// Rupert Russell 
// https://turtletoy.net/turtle/9e91b711f2
// See: https://blogmymaze.files.wordpress.com/2020/02/calculator_cretan_7_mymaze_2020_en.pdf
// MIT Licence, https://mit-license.org/
// Released under the MIT licence 
// https://mit-license.org/

Canvas.setpenopacity(1);
const turtle = new Turtle();
var scale = 12;
var radius = 1;
turtle.penup();
turtle.goto(0,0);
turtle.pendown();

turtle.home();
radius = scale * 0.04;
turtle.circle(radius, extent = 360);  // center point

turtle.penup(); // R 8
turtle.goto(scale * - 0.5, scale * -0);
turtle.pendown();
radius = scale * 0.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180); 
turtle.penup();
turtle.goto(scale * - 0.5, scale * -0);
turtle.pendown();
turtle.forward(scale * 4); 

// Join vertical to lower right R1
radius = scale * 2.0;
turtle.setheading(-90) 
turtle.circle(radius, extent = -90);  

turtle.penup(); //R7
turtle.goto(scale *  -1.5, 0);
turtle.pendown();
radius = scale * 1.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180); 

turtle.penup(); //R6
turtle.goto(scale *  -2.5, 0);
turtle.pendown();
radius = scale * 2.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180); 

turtle.penup(); //R5
turtle.goto(scale *  -3.5, 0);
turtle.pendown();
radius = scale * 3.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180); 

turtle.penup(); //R4
turtle.goto(scale *  -4.5, 0);
turtle.pendown();
radius = scale * 4.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  


turtle.penup(); //R3
turtle.goto(scale *  -5.5, 0);
turtle.pendown();
radius = scale * 5.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180); 


turtle.penup(); //R2
turtle.goto(scale *  -6.5, 0);
turtle.pendown();
radius = scale * 6.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  

turtle.penup();//R1
turtle.goto(scale *  -7.5, 0);
turtle.pendown();
radius = scale * 7.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  
// end of top arcs 
// start of middle right lower arcs
turtle.penup(); // R lower right 6
turtle.goto(scale * 2.5, scale * 0);
turtle.pendown();
radius = scale * 1.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 180);  //

turtle.penup(); // R lower right 5
turtle.goto(scale * 3.5, scale * 0);
turtle.pendown();
radius = scale * 2.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 90);  //
turtle.forward(scale * 4); 

turtle.penup(); // R lower right 4
turtle.goto(scale * 4.5, scale * 0);
turtle.pendown();
radius = scale * 3.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 90); 

turtle.penup(); // R lower right 3
turtle.goto(scale * 5.5, scale * 0);
turtle.pendown();
radius = scale * 4.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 90); 

turtle.penup(); // R lower right 2
turtle.goto(scale * 6.5, scale * 0);
turtle.pendown();
radius = scale * 5.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 90);  

turtle.penup(); // R lower right 1
turtle.goto(scale * 7.5, scale * 0);
turtle.pendown();
radius = scale * 6.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 90); 

// start of middle left lower arcs
turtle.penup(); // R lower left 5
turtle.goto(scale * -1.5, scale * 0);
turtle.pendown();
radius = scale * 1.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 180); 

turtle.penup(); // R lower left 4
turtle.goto(scale * -4.5, scale * 0);
turtle.pendown();
radius = scale * 2.0;
turtle.setheading(-90) 
turtle.circle(radius, extent = -90);

turtle.penup(); // R lower left 3
turtle.goto(scale * -5.5, scale * 0);
turtle.pendown();
radius = scale * 3.0;
turtle.setheading(-90) 
turtle.circle(radius, extent = -90); 

turtle.penup(); // R lower left 2
turtle.goto(scale * -6.5, scale * 0);
turtle.pendown();
radius = scale * 4.0;
turtle.setheading(-90) 
turtle.circle(radius, extent = -90); 

turtle.penup(); // R lower left 1
turtle.goto(scale * -7.5, scale * 0);
turtle.pendown();
radius = scale * 5.0;
turtle.setheading(-90) 
turtle.circle(radius, extent = -90); 

turtle.penup(); // M5 1 lower right inward 180
turtle.goto(scale * 1.5, scale * 5.0);
turtle.pendown();
radius = scale * 1.0;
turtle.setheading(180) 
turtle.circle(radius, extent = 180);

turtle.penup(); // M5 1 lower left inward 180
turtle.goto(scale * -2.5, scale * 5.0);
turtle.pendown();
radius = scale * 1.0;
turtle.setheading(-180) 
turtle.circle(radius, extent = -180);