Try fiddling with the parameters :)

Log in to post a comment.

// adpated from https://www.101computing.net/python-turtle-spirograph/ Canvas.setpenopacity(.5) const theta = 0.2 function Spirograph(R, r, d, rotations, scale = 1, offsetX = 0, offsetY = 0) { this.turtle = new Turtle() this.turtle.penup() this.turtle.goto((R-r+d) * scale, 0) this.turtle.pendown() this.angle = 0 this.walk = function(i) { x = (R - r) * Math.cos(this.angle) + d * Math.cos(((R-r)/r)*this.angle) y = (R - r) * Math.sin(this.angle) - d * Math.sin(((R-r)/r)*this.angle) x = x * scale + offsetX y = y * scale + offsetY this.turtle.goto(x,y) this.angle += theta return i < rotations * Math.PI / theta } } spiros = [] spiros.push(new Spirograph(125 / 2, 25 / 2, 205 / 2, 64, 0.6)) spiros.push(new Spirograph(75, 85, 125, 34, 0.125)) spiros.push(new Spirograph(120, 65, 120, 26, 0.06)) function walk(i) { spiros = spiros.filter(spiro => spiro.walk(i)) return spiros.length > 0 }