/*
*/ #include#include #define LEFTMARGIN 180. #define WIDTH 5760. #define BASEMARGIN 1400. main() /* Sierpinski Gasket */ { float a1[3], a2[3], x1, x2; int i, k, max; long r; max=50000 ; /* max is the number of points; make this larger to see a clearer picture. (50,000 points gives a very nice picture, but it may take a long time.) */ a1[0]=0.0; /* The points (a1[i],a2[i]) (i=0,1,or 2) are the three vertices of triangle. */ a2[0]=0.0; a1[1]=1.0; a2[1]=0.0; a1[2]=0.5; a2[2]=sqrt(3.0)*0.5; /* (x1,x2) is the starting point: change this to see that the picture is independent of x. */ x1=0.5; x2=0.5; /* Some Postscript stuff. */ printf("%%!PS-Adobe-2.0\n"); printf("%%%%BoundingBox: 0 0 612 792\n"); printf("%%%%Pages: 1\n"); printf("%%%%EndComments\n"); printf("%%%%Page: 1 1\n"); printf("/dot {2 0 360 arc fill} def\n .1 .1 scale\n"); for(k=0;k 2*(pow(2,31)-1)/3) i=2; else i=1; x1=fabs(0.5*(a1[i]+x1)); /* This goes halfway to the chosen vertex. */ x2=fabs(0.5*(a2[i]+x2)); /* printf("%f %f \n", x1,x2);*/ /* This prints the new point. */ printf("%d %d dot\n", (int)(x1*WIDTH + LEFTMARGIN), (int)(x2*WIDTH + BASEMARGIN)); } printf("showpage\n"); printf("%%%%Trailer\n"); } /* */