Fork of: Sunflower seed distribution
Essentially just reversing the growth in radius to shrinking instead.
Log in to post a comment.
// Forked from "Sunflower seed distribution" by Jurgen // https://turtletoy.net/turtle/1631e17b11 let r = 1.5; //min=.5, max=4, step=.1 let margin = .4; //min=0, max=1, step=.1 let maxR = 90; //min=20, max=150, step=10 let shrinkf = 1.4; //min=0, max=5, step=.1 let maxSR = 16; //min=1, max=20, step=.5 let opacity = .8; //min=.1, max=1, step=.1 let fillCircles = 1; //min=0, max=1, step=1 Canvas.setpenopacity(.5); const turtle = new Turtle(); turtle.setheading(90); var gr = (1+Math.sqrt(5)) / 2; var grRot = (gr - 1) * 2 * Math.PI; var circles = []; var rotation = 0; function drawCircle(x, y, r) { for(var i = (fillCircles == 1? 0: r); i <= r; i+=.2) { turtle.jump(x + i, y); turtle.circle(i); } circles.push([x, y, r]); } function hasIntersections(x, y, r) { for(var i = 0; i < circles.length; i++) { if(Math.pow(x - circles[i][0], 2) + Math.pow(y - circles[i][1], 2) < Math.pow(r + circles[i][2] + margin, 2)) { return true; } } return false; } function walk(i) { rotation += grRot; for(var testR = 0; testR < maxR; testR += 0.1) { var x = testR * Math.cos(rotation); var y = testR * Math.sin(rotation); var useR = Math.min(maxSR, r - (shrinkf * testR / 100)) if(!hasIntersections(x, y, useR, circles)) { drawCircle(x, y, useR); return true; } } return false; }