Log in to post a comment.
// https://daten.digitale-sammlungen.de/~db/0006/bsb00064971/images/index.html?seite=111&fip=193.174.98.30 // https://blogmymaze.wordpress.com/2019/05/05/sigmund-gossembrot-1/ // https://download.digitale-sammlungen.de/BOOKS/download.pl?ersteseite=1&letzteseite=615&id=00064971&ersteseite=1&letzteseite=615&vers=e&nr=&abschicken=ja&captcha_zeit=00064971&xdfz=2&dafoemail= // Released under // Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) Canvas.setpenopacity(1); // Global code will be evaluated once. const turtle = new Turtle(); const h = 0; const k = 0; const Pointradius = 1; // //min=1 max=120 step=1 const circleRadius =30; // //min=29 max=33 step=1 const rotate = 0; const xPoint = []; const yPoint = []; var x; var y; const radius=31; // // min=10 max=90 step=1 const endPointRadius=1; // // min=0.5 max=3 step=0.1 var currentHeadding=0; let degree = 91; // inner star points(5,31, 0); // calculate spokes points(5,40, 45); // 2 points(5,76, 50); // 6 points(5,49, 55); // 3 points(5,85, 60); // 7 points(5,58, 65); // 4 points(5,94, 70); // 8 // draw the spokes turtle.jump(xPoint[4], yPoint[4]); turtle.goto(xPoint[1], yPoint[1]); turtle.jump(xPoint[1], yPoint[1]); turtle.goto(xPoint[3], yPoint[3]); turtle.jump(xPoint[3], yPoint[3]); turtle.goto(xPoint[0], yPoint[0]); turtle.jump(xPoint[0], yPoint[0]); turtle.goto(xPoint[2], yPoint[2]); turtle.jump(xPoint[2], yPoint[2]); turtle.goto(xPoint[4], yPoint[4]); centeredArc(0, 0,31, 181, -167,5 ,6); //1 centeredArc(0, 0,40, 170, -156, 7, 8); //2 centeredCircle(xPoint[8],yPoint[8],endPointRadius) centeredArc(0, 0,49, 161, 43, 9, 10); //3.1 centeredCircle(xPoint[9],yPoint[9],endPointRadius); centeredArc(0, 0, 49, 28, -99, 11, 12) //3.2 centeredArc(0, 0, 49, -115.5, -171, 13, 14) //3.3 - 115 -171 // join end 1 with end 3.3 turtle.goto(xPoint[6],yPoint[6]); centeredArc(0, 0,58, 172.45, 114, 15, 16); //4.1 // join start 4.1 with end 3.3 turtle.jump(xPoint[15],yPoint[15]); turtle.goto(xPoint[7],yPoint[7]); centeredArc(0, 0,58, 102, 51, 17, 18); //4.2 centeredCircle(xPoint[18],yPoint[18],endPointRadius); centeredArc(0, 0,58, 18, -89, 19, 20); //4.3 centeredCircle(xPoint[19],yPoint[19],endPointRadius); centeredCircle(xPoint[20],yPoint[20],endPointRadius); centeredArc(0, 0,58, -121.5, -179, 21, 22); //4.4 centeredCircle(xPoint[21],yPoint[21],endPointRadius); centeredArc(0, 0,67, 181, 121, 23, 24); //5.1 centeredCircle(xPoint[24],yPoint[24],endPointRadius); centeredArc(0, 0,67, 97, 42, 25, 26); //5.2 centeredCircle(xPoint[25],yPoint[25],endPointRadius); centeredArc(0, 0,67, 30, -30, 27, 28); //5.3 centeredArc(0, 0,67, -40, -101, 29, 30); //5.4 centeredArc(0, 0,67, -114, -174, 31, 32); //5.5 // Joining ends turtle.jump(xPoint[10],yPoint[10]); turtle.goto(xPoint[26],yPoint[26]); turtle.jump(xPoint[11],yPoint[11]); turtle.goto(xPoint[27],yPoint[27]); turtle.jump(xPoint[12],yPoint[12]); turtle.goto(xPoint[30],yPoint[30]); turtle.jump(xPoint[13],yPoint[13]); turtle.goto(xPoint[31],yPoint[31]); centeredArc(0, 0,76, 174, 113, 33, 34); //6.1 turtle.jump(xPoint[16],yPoint[16]); turtle.goto(xPoint[34],yPoint[34]); centeredArc(0, 0,76, 103.5, -24, 35, 36); //6.2 turtle.jump(xPoint[17],yPoint[17]); turtle.goto(xPoint[35],yPoint[35]); centeredCircle(xPoint[36],yPoint[36],endPointRadius); centeredArc(0, 0,76, -48, -169, 37, 38); //6.3 centeredCircle(xPoint[37],yPoint[37],endPointRadius); centeredCircle(xPoint[38],yPoint[38],endPointRadius); centeredArc(0, 0,85, 168, -31, 39, 40); //7.1 centeredCircle(xPoint[39],yPoint[39],endPointRadius); turtle.jump(xPoint[28],yPoint[28]); turtle.goto(xPoint[40],yPoint[40]); centeredArc(0, 0,85, -39.5, -175, 41, 42); //7.2 -43, -174, turtle.jump(xPoint[29],yPoint[29]); turtle.goto(xPoint[41],yPoint[41]); turtle.jump(xPoint[32],yPoint[32]); turtle.goto(xPoint[42],yPoint[42]); centeredArc(0, 0,94, 175, -179, 43, 44); //8.1 turtle.jump(xPoint[33],yPoint[33]); turtle.goto(xPoint[43],yPoint[43]); //spokes turtle.jump(xPoint[48],yPoint[48]); turtle.goto(xPoint[53],yPoint[53]); //spoke 2 turtle.jump(xPoint[72],yPoint[72]); turtle.goto(xPoint[67],yPoint[67]); //spoke 4 turtle.jump(xPoint[46],yPoint[46]); turtle.goto(xPoint[51],yPoint[51]); //spoke 5 turtle.jump(xPoint[59], yPoint[59]); turtle.goto(xPoint[64], yPoint[64]); // center north south line turtle.jump(xPoint[0], yPoint[0]); turtle.goto(xPoint[70], yPoint[70]); // Plot lines out from star corners // centeredCircle(xPoint[n],yPoint[n],endPointRadius * 2); turtle.jump(xPoint[0],yPoint[0]); function points(nPoints, radius, arrayStart){ // Draw n points around a circle for ( i = 0; i < nPoints; i++) { x = h + radius* Math.cos(degrees_to_radians(degree)); y = k + radius* Math.sin(degrees_to_radians(degree)); xPoint[arrayStart + i] = x; yPoint[arrayStart + i] = y; degree = degree + 360 / nPoints; } } function degrees_to_radians(degrees) { return degrees * (Math.PI / 180); } function centeredCircle(x,y, radius) { turtle.seth(0); turtle.jump(x,y-radius); turtle.circle(radius, 360); } function centeredArc(x,y, radius, startAngle, endAngle, startXY, endXY) { turtle.seth(0); turtle.jump(x,y-radius); turtle.penup(); turtle.circle(radius, startAngle + rotate); // move to start xPoint[startXY] = turtle.xcor(); yPoint[startXY] = turtle.ycor(); turtle.pendown(); turtle.circle(radius, endAngle - startAngle); // draw to end xPoint[endXY] = turtle.xcor(); yPoint[endXY] = turtle.ycor(); }