See page 38
direct.mit.edu/books…uter-as-a-medium-for
Log in to post a comment.
// Forked from "Spirolateral 003" by rupertxrussell
// https://turtletoy.net/turtle/d5cefb90ea
// You can find the Turtle API reference here: https://turtletoy.net/syntax
Canvas.setpenopacity(1);
// inspired by https://direct.mit.edu/books/oa-monograph/4663/Turtle-GeometryThe-Computer-as-a-Medium-for
// Turtle Geometry: The Computer as a Medium for Exploring Mathematics
// Harold Abelson, Andrea diSessa
// The MIT Press
// DOI: https://doi.org/10.7551/mitpress/6933.001.0001
// ISBN electronic: 9780262362740
// Publication date: 1981
// Global code will be evaluated once.
const turtle = new Turtle();
var n = 9; // //min=9 max=34 step=1
const scale = 5;// // min=1 max=6 step=1
const angle = 90; // //min=60 max=120 step=30
const index = 0;
var count = 0;
n = 9;
turtle.jump(-90,-90); for(var iter = 0; iter < n; iter ++){ subgspiro(2,angle,n, 3, 4, 5);}
n = 11;
turtle.jump(-50,-70); for(var iter = 0; iter < n; iter ++){ subgspiro(1.7,angle,n, 3, 4, 5);}
n = 12;
turtle.jump(8,-75); for(var iter = 0; iter < n; iter ++){ subgspiro(1.7,angle,n, 3, 4, 5);}
n = 13;
turtle.jump(40,-73); for(var iter = 0; iter < n; iter ++){ subgspiro(1.7,angle,n, 3, 4, 5);}
n = 15;
turtle.jump(75,-93); for(var iter = 0; iter < n; iter ++){ subgspiro(1.2,angle,n, 3, 4, 5);}
n = 16;
turtle.jump(-90,-56); for(var iter = 0; iter < n; iter ++){ subgspiro(1.2,angle,n, 3, 4, 5);}
n = 17;
turtle.jump(-47,-58); for(var iter = 0; iter < n; iter ++){ subgspiro(1.2,angle,n, 3, 4, 5);}
n = 19;
turtle.jump(-8,-38); for(var iter = 0; iter < n; iter ++){ subgspiro(1,angle,n, 3, 4, 5);}
n = 20;
turtle.jump(43,-42); for(var iter = 0; iter < n; iter ++){ subgspiro(1,angle,n, 3, 4, 5);}
n = 21;
turtle.jump(75,-42); for(var iter = 0; iter < n; iter ++){ subgspiro(0.9,angle,n, 3, 4, 5);}
n = 23;
turtle.jump(-75,-22); for(var iter = 0; iter < n; iter ++){ subgspiro(0.7,angle,n, 3, 4, 5);}
n = 24;
turtle.jump(-49,-20); for(var iter = 0; iter < n; iter ++){ subgspiro(0.79,angle,n, 3, 4, 5);}
n = 25;
turtle.jump(-5,-22); for(var iter = 0; iter < n; iter ++){ subgspiro(0.7,angle,n, 3, 4, 5);}
n = 27;
turtle.jump(31,-5); for(var iter = 0; iter < n; iter ++){ subgspiro(0.65,angle,n, 3, 4, 5);}
n = 28;
turtle.jump(79,-07); for(var iter = 0; iter < n; iter ++){ subgspiro(0.7,angle,n, 3, 4, 5);}
n = 29;
turtle.jump(-75, 30); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 31;
turtle.jump(-35, 10); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 32;
turtle.jump(-8, 15); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 33;
turtle.jump(30, 15); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 35;
turtle.jump(70, 37); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 36;
turtle.jump(-70, 74); for(var iter = 0; iter < n; iter ++){ subgspiro(0.67,angle,n, 3, 4, 5);}
n = 37;
turtle.jump(-30, 75); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 39;
turtle.jump(21, 55); for(var iter = 0; iter < n; iter ++){ subgspiro(0.6,angle,n, 3, 4, 5);}
n = 40;
turtle.jump(61, 62); for(var iter = 0; iter < n; iter ++){ subgspiro(0.7,angle,n, 3, 4, 5);}
function subgspiro (side, angle, max, a, b, c){
count = 1;
turtle.pendown();
for (var i = 0; i < max; i++) {
step = side * count;
turtle.forward(step);
if((count == a) || (count == b) || count==c){
turtle.left(angle);
}
else{
turtle.right(angle);
}
count ++;
}
}
// turtle.right(angle);
count = count + 1;