#include /* sqrt() */ #include /* complex, I, creal(), cimag() */ #include "FatouComputation.h" #define LEEWAY 0.001 #define ITERATIONS 100 #define CLOSE_ENOUGH(z, x, y) \ (fabs(creal(z) - (x)) < LEEWAY && fabs(cimag(z) - (y)) < LEEWAY) static unsigned int colors[] = {0xFF0000, 0x00FF00, 0x0000FF}; unsigned int FatouComputation::compute(double x, double y) { double complex z = 0.1; double complex p = x + I * y; for (int iter = 0; iter < ITERATIONS; iter++) { z = p * (1 - z) * z; if (cabs(z) > 2.0) { return colors[iter % (sizeof(colors)/sizeof(colors[0]))]; } } return 0; }