/* File name 8-2.c */
#include <stdio.h>
#define BASE 5
#define SIZE 512
#define BOUNDS 1.0
int hantei(double real, double imaginary);
main()
{
double interval=2*BOUNDS/SIZE;
int i, j, result, red, green, blue;
FILE *fp;
fp=fopen("mandelbrot.ppm", "w");
fprintf(fp, "P6\n%d %d\n%d\n", SIZE, SIZE, BASE-1);
for(i=0; i < SIZE; i++){
for(j=0; j < SIZE; j++){
result = hantei(-1.5*BOUNDS+j*interval, BOUNDS-i*interval);
red=result%BASE;
green=(result/BASE)%BASE;
blue=(result/BASE)/BASE;
fprintf(fp, "%c%c%c", red,green,blue);
}
}
}
int hantei(double real, double imaginary)
{
int answer=0;
double x=0.0;
double y=0.0;
double nextx;
while(answer<(BASE*BASE*BASE-1)&& x*x+y*y < 25.0){
nextx = x*x-y*y+real;
y = 2*x*y +imaginary;
x=nextx;
answer++;
}
return answer;
}