#include "stdio.h" #include "stdlib.h" #include "math.h" #include "paulslib.h" #include "bitmaplib.h" #define NXY 1026 int main(int argc,char **argv) { int i,j,c1; double c; double a[NXY+1][NXY+1]; BITMAP *image,colour,white={65535,65535,65535},black={0,0,0}; char fname[64]; FILE *fptr; if (argc < 2) { fprintf(stderr,"Uasge: %s c\n",argv[0]); exit(1); } c = atof(argv[1]); c1 = (c >= 2 ? (int)c : 2); for (i=0;i<=NXY;i++) for (j=0;j<=NXY;j++) a[i][j] = 0; a[0][0] = 1; a[0][1] = 1; a[1][0] = 1; a[1][1] = c; /* Create the image */ image = CreateBitmap(NXY,NXY); EraseBitmap(image,NXY,NXY,white); for (i=2;i<=NXY/2;i++) { for (j=1;j<=i;j++) { if (j == 1) a[i][j-1] = 1; a[i][j] = (int)(a[i][j-1] + a[i-1][j]) % c1; colour = white; if (a[i][j] > 0) colour = black; if (j <= NXY/2) { DrawPixel(image,NXY,NXY,NXY/2+i,NXY/2+j,colour); DrawPixel(image,NXY,NXY,NXY/2-i,NXY/2+j,colour); DrawPixel(image,NXY,NXY,NXY/2+i,NXY/2-j,colour); DrawPixel(image,NXY,NXY,NXY/2-i,NXY/2-j,colour); } if (i <= NXY/2) { DrawPixel(image,NXY,NXY,NXY/2+j,NXY/2+i,colour); DrawPixel(image,NXY,NXY,NXY/2+j,NXY/2-i,colour); DrawPixel(image,NXY,NXY,NXY/2-j,NXY/2+i,colour); DrawPixel(image,NXY,NXY,NXY/2-j,NXY/2-i,colour); } } } /* Write the image to a ppm file */ sprintf(fname,"roger7_%g.ppm",c); if ((fptr = fopen(fname,"w")) == NULL) { fprintf(stderr,"Unable to open bitmap file\n"); exit(0); } WriteBitmap(fptr,image,NXY,NXY,2); fclose(fptr); DestroyBitmap(image); } #include "bitmaplib.c"