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
}