A method of drawing infinitely many touching circles, based on this tweet twitter.com/matthen2/status/1256824725814120448 by @matthen2 and youtu.be/sg_6nlmz8f4.
Log in to post a comment.
// Touching circles. Created by Reinder Nijhoff 2020 - @reindernijhoff
//
// https://turtletoy.net/turtle/59d0a20f0c
//
// Based on https://twitter.com/matthen2/status/1256824725814120448 by @matthen2
//
const turtle = new Turtle();
const pow = -1; // min=-2, max=0, step=0.01
const xoffset = -.25; // min=-1, max=1, step=0.01
const yoffset = -.65; // min=-1, max=1, step=0.01
const radius = 45;
const grid = 40;
const steps = 250;
function trans(p) {
p[0] += xoffset; p[1] += yoffset;
let s = Math.pow(p[0]**2 + p[1]**2, pow);
return [radius * p[1] * s, radius * p[0] * s];
};
function addCircle(x,y) {
turtle.jump(trans([x+.5,y]));
for (let i=0; i<=steps; i++) {
const a = Math.PI * 2 * i / steps;
turtle.goto(trans([x+.5*Math.cos(a), y+.5*Math.sin(a)]));
}
}
function walk(i) {
const x = (i % grid) - (grid/2|0);
const y = (i/grid|0) - (grid/2|0);
addCircle(x, y);
return i < grid * grid - 1;
}