/* * Bryan Ward * movie_julia.c - Generates the frames for a julia set movie */ #include #include #include #include #include #define width 1280 #define height 1024 #define iter 255 #define frames 100 #define xmin -2.0 #define xmax 2.0 #define ymin -2.0 #define ymax 2.0 int main () { FILE *fl; int x, y, i,f; double xpix, ypix; double complex z; double complex c; int escape; char file[4]; int *final = malloc(sizeof(int)*width*height); if(final == NULL) { printf("out of memory\n"); exit(1); } // int final[width * height]; for(f = 0;f < frames;f++) { sprintf(file,"frames/%04d",f); c = f*.001; if ((fl = fopen (file, "w")) == NULL) fprintf (stderr, "Cannot open %s\n", file); fprintf (fl, "P2\n"); fprintf (fl, "#Copyright (C) 2007 Bryan Ward\n"); fprintf (fl, "%d\t%d\n", width, height); fprintf (fl, "255\n"); ypix = (ymax - ymin) / height; xpix = (xmax - xmin) / width; for (i = 0; i < width * height; i++) { z = xmin + (i%width * xpix) + (ymin + (i/height * ypix))* I; final[i] = checkPoint(z,c); } for (i = 0; i < width * height; i++) fprintf (fl, "%d\n", final[i]); fclose (fl); } return 0; } int checkPoint (double complex z, double complex c) { // double complex c = .32 + .043*I; int j = 0; while (sqrt (creal (z) * creal (z) + cimag (z) * cimag (z)) < 2 && j < iter) { z = z * z + c; j++; } return j; }