// Clastic Cretan 7 Circuit Labyrin
// 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/
// 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();

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

// R 8
turtle.penup();
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); // vertical  between right 5 & left 4

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

//R7
turtle.penup();
turtle.goto(scale *  -1.5, 0);
turtle.pendown();

radius = scale * 1.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R6
turtle.penup();
turtle.goto(scale *  -2.5, 0);
turtle.pendown();

radius = scale * 2.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R5
turtle.penup();
turtle.goto(scale *  -3.5, 0);
turtle.pendown();

radius = scale * 3.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R4
turtle.penup();
turtle.goto(scale *  -4.5, 0);
turtle.pendown();

radius = scale * 4.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R3
turtle.penup();
turtle.goto(scale *  -5.5, 0);
turtle.pendown();

radius = scale * 5.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R2
turtle.penup();
turtle.goto(scale *  -6.5, 0);
turtle.pendown();

radius = scale * 6.5;
turtle.setheading(-90) 
turtle.circle(radius, extent = 180);  //

//R1
turtle.penup();
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
// R lower right 6
turtle.penup();
turtle.goto(scale * 2.5, scale * 0);
turtle.pendown();
radius = scale * 1.0;
turtle.setheading(90) 
turtle.circle(radius, extent = 180);  //

// R lower right 5
turtle.penup();
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); // horzontal between right 5 & left 4


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

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

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

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

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

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

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

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

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

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

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