> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.jERD8UEiWJn/rev.29
 * 
 * authors: 
 *   GoToLoop

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



/**
 * Mandelbrot Set, the (v3.22)
 * by  Daniel Shiffman
 * mod Asimes & GoToLoop (2014/Aug)
 *
 * forum.processing.org/two/discussion/6841/zoom
 * processing.org/examples/mandelbrot.html
 *
 * studio.processingtogether.com/sp/pad/export/ro.96P5CDnO6mAXt/latest
 */

// Increase this when you zoom in more:
final int MAX_ITERS = 300;

// Manipulate these to zoom in/out:
final float XMIN = -.65, YMIN = -.715, DIM = .2;
final float XMAX = XMIN + DIM, YMAX = YMIN + DIM;

size(800, 800, JAVA2D);
noLoop();
loadPixels();

final int w = width, h = height, dots[] = pixels;
final float dx = (XMAX - XMIN)/w, dy = (YMAX - YMIN)/h;

float x = XMIN, y = YMIN, a = x, b = y, aa, bb;

for (int i = 0; i != w; ++i, x += dx, b = y = YMIN)
  for (int j = 0, n = 0; j != h; a = x, b = y += dy, n = 0) {
    while (++n != MAX_ITERS & (aa = a*a) + (bb = b*b) < 16.0) {
      b = 2.0*a*b + y;
      a = aa - bb + x;
    }

    dots[j++*w + i] = MAX_ITERS==n? #000000 : color(n<<4 & 0xFF);
  }

if (1/2 == 1/2.)  pixels = dots;
updatePixels();