Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@scowalt
Created October 11, 2013 01:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scowalt/6928512 to your computer and use it in GitHub Desktop.
Save scowalt/6928512 to your computer and use it in GitHub Desktop.
Processing "glowing" mandelbrot fractal example SIGMusic
// http://processing.org/examples/mandelbrot.html
// Establish a range of values on the complex plane
// A different range will allow us to "zoom" in or out on the fractal
// float xmin = -1.5; float ymin = -.1; float wh = 0.15;
float xmin = -3;
float ymin = -1.25;
float w = 5;
float h = 2.5;
void setup() {
size(640, 360);
background(255);
frameRate(60);
}
float it = 0;
float increment = 0.005;
void draw() {
// Make sure we can write to the pixels[] array.
// Only need to do this once since we don't do any other drawing.
loadPixels();
// Have the fractal fade in and out
it = (it + increment);
if (it >= 0.5 || it <= 0.0)
increment = increment * -1;
// Maximum number of iterations for each point on the complex plane
int maxiterations = 100;
// x goes from xmin to xmax
float xmax = xmin + w;
// y goes from ymin to ymax
float ymax = ymin + h;
// Calculate amount we increment x,y for each pixel
float dx = (xmax - xmin) / (width);
float dy = (ymax - ymin) / (height);
// Start y
float y = ymin;
for (int j = 0; j < height; j++) {
// Start x
float x = xmin;
for (int i = 0; i < width; i++) {
// Now we test, as we iterate z = z^2 + cm does z tend towards infinity?
float a = x;
float b = y;
int n = 0;
while (n < maxiterations) {
float aa = a * a;
float bb = b * b;
float twoab = 2.0 * a * b;
a = aa - bb + x;
b = twoab + y;
// Infinty in our finite world is simple, let's just consider it 16
if (aa + bb > 16.0) {
break; // Bail
}
n++;
}
// We color each pixel based on how long it takes to get to infinity
// If we never got there, let's pick the color black
if (n == maxiterations) {
pixels[i+j*width] = color(0);
}
else {
// Gosh, we could make fancy colors here if we wanted
pixels[i+j*width] = color(it*n*16 % 255, 0, 0);
}
x += dx;
}
y += dy;
}
updatePixels();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment