xxxxxxxxxx
40
// References:
// http://paulbourke.net/geometry/butterfly/
const e = Math.E;
let u, r, speed, count;
let prev_x = 0,
prev_y = 0;
function setup() {
const length = min(innerWidth, innerHeight)
createCanvas(length, length)
background(40)
u = 0
r = width * 0.10
speed = PI / 100
count = 0
}
function draw() {
translate(width/2, height/2)
rotate(-PI/2)
stroke(count % 100, count % 300 + 100, count % 200 + 100)
strokeWeight(3)
let x = r * cos(u) * (pow(e, cos(u)) - 2*cos(4*u) - pow(sin(u/12), 5))
let y = r * sin(u) * (pow(e, cos(u)) - 2*cos(4*u) - pow(sin(u/12), 5))
if (count > 0) {
line(prev_x, prev_y, x, y)
}
prev_x = x
prev_y = y
u += speed
count += 1
}