/* Two-species competition simulation */ #include #include #define MAXTIME 100 #define OUTTIME 5 #define PSTIME 1 #define CELLS 1000 #define PSSKIP 2 #define ALPHA1 0.25 #define ALPHA2 0.25 #define BETA12 0.075 /* b12+b21<1 */ #define BETA21 0.1 #define MU1 0.05 #define MU2 0.05 #define MIXED 1 int state[CELLS], dist1, dist2; double n1cnt, n2cnt, alpha1, alpha2, beta12, beta21, mu1, mu2; void InitStuff(void); void Competition(void); void Reproduction(void); void NewBabe(int, int, int); void Mortality(void); #if(MIXED) void Mix(void); #endif void Measurements(void); void Spit_EPS_Header(FILE *, int, int); void Spit_EPS_Row(FILE *, int); void Spit_EPS_Trailer(FILE *); int main(void) { int i; FILE *fileid1, *fileid2; fileid1 = fopen("compete1.eps","w"); fileid2 = fopen("compete2.eps","w"); InitStuff(); printf("Enter dispersal distances dist1 and dist2:\n"); scanf("%d %d",&dist1,&dist2); Spit_EPS_Header(fileid1,CELLS/PSSKIP,MAXTIME/PSTIME); Spit_EPS_Header(fileid2,CELLS/PSSKIP,MAXTIME/PSTIME); for(i=0;i=0&&newsite700.0) { rat = 700.0/newl; newl = 700.0; neww = rat*neww; } /* 8.5x11 page with no margins is 612x792 points */ xorigin = (612 - neww)/2.0; yorigin = (792 - newl)/2.0; /* defines compliance */ fprintf(fileid,"%%!PS-Adobe-2.0 EPSF-2.0\n"); /* defines size of image */ fprintf(fileid,"%%%%BoundingBox: %f %f %f %f\n", xorigin-5, yorigin-5,xorigin+neww+5,yorigin+newl+5); /* save present graphics state */ fprintf(fileid,"gsave\n"); /* put box around image */ fprintf(fileid,"%f %f moveto\n",xorigin-1,yorigin-1); fprintf(fileid,"%f %f lineto\n",xorigin-1,yorigin+newl+1); fprintf(fileid,"%f %f lineto\n",xorigin+neww+1,yorigin+newl+1); fprintf(fileid,"%f %f lineto\n",xorigin+neww+1,yorigin-1); fprintf(fileid,"%f %f lineto\n",xorigin-1,yorigin-1); fprintf(fileid,"stroke\n\n",xorigin-1,yorigin-1); /* define procedure "bufstr" to read strings of "width" characters */ fprintf(fileid,"/bufstr %d string def\n\n",width); /* move to origin of image */ fprintf(fileid,"%f %f translate\n",xorigin,yorigin); /* define the scale (default is 1 pt I guess) */ fprintf(fileid,"%f %f scale\n\n",neww,newl); /* width, height, and number of bits per pixel */ fprintf(fileid,"%d %d 4\n",width,length); /* a matrix definition */ fprintf(fileid,"[%d 0 0 %d 0 %d]\n",width,-length,length); /* guidelines on how to read the image data */ fprintf(fileid,"{currentfile bufstr readhexstring pop} bind image\n"); } void Spit_EPS_Row(FILE *fileid, int species) { int i; for(i=0;i