initial commit
This commit is contained in:
51
main.js
Normal file
51
main.js
Normal file
@@ -0,0 +1,51 @@
|
||||
// The mandelbrot set definition
|
||||
const set = (c) =>
|
||||
(z) => z.multiply(z).add(c);
|
||||
|
||||
|
||||
const BASE_COLOR = new Color(60, 60, 200, 255);
|
||||
|
||||
(function render() {
|
||||
requestAnimationFrame(() => {
|
||||
const image = ctx.createImageData(board.width, board.height);
|
||||
|
||||
for (let i = 0; i < board.width; i++) {
|
||||
for (let j = 0; j < board.height; j++) {
|
||||
const scaledX = rangeTransform(i, 0, board.width, -2.5, 1);
|
||||
const scaledY = rangeTransform(j, 0, board.height, -1, 1);
|
||||
|
||||
// constant: x_0 + iy_0
|
||||
const c = new Complex(scaledX, scaledY);
|
||||
|
||||
// The mandelbrot set, with the constant value fixed
|
||||
const f = set(c);
|
||||
let value = new Complex(0, 0);
|
||||
|
||||
let step = 0;
|
||||
while (value.squaredAbsolute() < 4 && step < maxIterations) {
|
||||
value = f(value);
|
||||
step++;
|
||||
}
|
||||
|
||||
let color = BASE_COLOR.clone();
|
||||
color.hue((baseHue / 255) + step*step / maxIterations);
|
||||
|
||||
paintPixel(image, i, j, color);
|
||||
}
|
||||
}
|
||||
|
||||
ctx.putImageData(image, 0, 0);
|
||||
|
||||
render();
|
||||
});
|
||||
}());
|
||||
|
||||
maxIterations = 0;
|
||||
const mxi = setInterval(() => {
|
||||
maxIterations = Math.min(maxIterations + 10, 300);
|
||||
document.getElementById('max-iterations').value = maxIterations;
|
||||
|
||||
if (maxIterations === 300) {
|
||||
clearInterval(mxi);
|
||||
}
|
||||
}, 200);
|
||||
Reference in New Issue
Block a user