xxxxxxxxxx
67
const circles = [];
let zoomX, zoomY, formula;
function preload() {
formula = loadImage('formula.png'); // Hamid Naderi Yeganeh
}
function setup() {
const p = PI;
const X = k => 3 / 2 *
pow(cos(141 * p * k / 40000), 9) *
(1 - 1 / 2 * sin(p * k / 40000)) *
(1 - 1 / 4 * pow(cos(2 * p * k) / 40000, 30)) *
(1 + pow(cos(32 * p * k) / 40000, 20)) *
(1 - 1 / 2 * pow(sin(2 * p * k / 40000), 30) *
pow(sin(6 * p * k / 40000), 10) *
(1 /2 + 1 / 2 * (pow(sin(18 * p * k / 40000), 20))));
const Y = k => cos((2 * p * k) / 40000) * pow(cos(141 * p * k / 40000), 2) * (1 + 1/4 * pow(cos(p * k / 40000) * cos(3 * p * k / 40000) * cos(21 * p * k / 40000), 24));
const R = k =>
1 / 40 *
(
pow(cos(141 * p * k / 40000), 14) +
pow(sin(141 * p * k / 40000), 6)
) *
(1 -
pow(
cos(p * k / 40000) *
cos(3 * p * k / 40000) *
cos(12 * p * k / 40000), 16)
) + 1/100;
for(let i = 1; i < 40000; i++) {
circles.push({
x: X(i),
y: Y(i),
r: R(i)
})
}
createCanvas(windowWidth, windowHeight);
zoomX = width * 0.1;
zoomY = height * 0.1;
noFill();
stroke(0);
strokeWeight(0.5);
background(255);
const zooming = map(3, 2, 5, sin(frameCount / 12), 7.5);
push();
translate(width / 2, height / 2.5);
rotate(PI);
scale(zooming);
for(circ of circles) {
circle(circ.x * zoomX, circ.y * zoomY, circ.r * zoomX)
}
pop();
imageMode(CENTER);
image(formula, width / 2, height / 1.2, formula.width / 3, formula.height / 3)
}
function draw() {
}