xxxxxxxxxx
120
var s = 600;
var minv;
var maxv;
var divE;
let widthC = s-100;
let heightC = s/2;
let xMin = -90;
let xMax = s-90;
let yMin = -s/4;
let yMax = s*3/4;
function setup() {
createCanvas(widthC, heightC);
background(0);
text("CLICK ME!", (s-200)/2 , s/4);
pixelDensity(1);
divE = createElement("div", "");
}
function doit(){
resetMatrix();
loadPixels();
for(let k = 0; k < widthC; k+=2){
for(let l = 0; l < heightC; l+=2){
let xx = map(k, xMin, xMax, -2.27525, 1.7275);
let yy = map(l, yMin, yMax, 2, -2);
//let c = new Complex(x, y);
//let p = mandelbrot(c, k, l);
fastMandelbrot(xx, yy, (l*width+k)*4);
}
}
updatePixels();
}
var iterations = 10;
var magic_num = 15;
function mandelbrot(c, k, l){
let z = c;
let a = new Complex(x , y);
let i;
for(i = 0; i < iterations; i++){
z = addComplex(multiplyComplex(z, z), a);
if(z.r + z.i > magic_num) break;
}
let r = map(z.r, 0, magic_num, 0 , 255);
let g = map(i, 0, iterations, 255, 0);
let b = map(z.i, 0, magic_num, 0, 255);
let index = (l*width+k)*4;
pixels[index + 0] = r;
pixels[index + 1] = g;
pixels[index + 2] = b;
pixels[index + 3] = 255;
}
function fastMandelbrot(cR, cI, index) {
let i;
for(i = 0; i < iterations; i++) {
let tempCr = cR;
cR = (cR * cR - cI * cI) + x;
cI = 2*tempCr*cI + y;
if(cR + cI > magic_num) break;
}
pixels[index + 0] = map(cR, 0, magic_num, 0 , 255);
pixels[index + 1] = map(i, 0, iterations, 255, 0);
pixels[index + 2] = map(cI, 0, magic_num, 0, 255);
pixels[index + 3] = 255;
}
function mouseClicked() {
background(0);
doit();
}
function multiplyComplex(a, b){
let c = new Complex(0, 0);
c.r = a.r * a.r + (-1) * a.i * b.i;
c.i = a.r*b.i + b.r*a.i;
return c;
}
function addComplex(a, b){
let c = new Complex(0, 0);
c.r = a.r + b.r;
c.i = a.i + b.i;
return c;
}
var x;
var y;
var firstClick = 0;
function draw() {
x = map(mouseX, xMin, xMax, -2.27525, 1.7275);
y = map(mouseY, yMin, yMax, -2, 2);
background(0);
doit();
// stroke("red");
// strokeWeight(0.5);
// }
}