:::::::::::::: aitken.c :::::::::::::: float aitken(degree,coeff,t) /* uses Aitken's algorithm to compute one coordinate value of a Lagrange curve. Has to be called for each coordinate (x,y, and/or z) of data set. Input: degree: degree of curve. coeff: array with coordinates to be interpolated. t: parameter value where to interpolate. Output: coordinate value. Note: we assume a uniform knot sequence! */ float coeff[]; float t; int degree; { int r,i; float t1; float coeffa[30]; for (i=0; i<=degree; i++) coeffa[i]=coeff[i]; /* save input */ for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) { t1=(degree*t-i)/((float) r); coeffa[i]= (1.0-t1)* coeffa[i] + t1 * coeffa[i+1] ; } return (coeffa[0]); } :::::::::::::: area.c :::::::::::::: float area(p1,p2,p3) /* find area of 2D triangle p1,p2,p3 */ float p1[2], p2[2], p3[2]; { return( (p2[0]-p1[0])*(p3[1]-p1[1])-(p2[1]-p1[1])*(p3[0]-p1[0]))/2.0; } :::::::::::::: bessel_ends.c :::::::::::::: void bessel_ends(data,knot,l) /* Computes B-spline points data[1] and data[l+] according to Bessel end condition. input: data: sequence of data coordinates data[0] to data[l+2]. Note that data[1] and data[l+1] are expected to be empty, as they will be filled by this routine. knot: knot sequence l: number of intervals output: data: completed, as above. */ float data[], knot[]; int l; { float alpha, beta; int i; if (l==1) {/* This is not really Bessel, but then what do you do when you have only one interval? -- make it linear! */ data[1]= (2.0*data[0] + data[3])/3.0; data[2]= (2.0*data[3] + data[0])/3.0; } else if (l==2) { /* beginning: */ alpha= (knot[2]-knot[1])/(knot[2]-knot[0]); beta = 1.0 - alpha; data[1]=(data[2]-alpha*alpha*data[0]-beta*beta*data[4]) /(2.0*alpha*beta); data[1]=2.0*(alpha*data[0]+beta*data[1])/3.0 + data[0]/3.0; /* end: */ alpha= (knot[2]-knot[1])/(knot[2]-knot[0]); beta = 1.0 - alpha; data[3]=(data[2]-alpha*alpha*data[0]-beta*beta*data[4]) /(2.0*alpha*beta); data[3]=2.0*(alpha*data[3]+beta*data[4])/3.0+data[4]/3.0; } else { /* beginning: */ alpha= (knot[2]-knot[1])/(knot[2]-knot[0]); beta = 1.0 - alpha; data[1]=(data[2]-alpha*alpha*data[0]-beta*beta*data[3]) /(2.0*alpha*beta); data[1]=2.0*(alpha*data[0]+beta*data[1])/3.0 + data[0]/3.0; /* end: */ alpha= (knot[l]-knot[l-1])/(knot[l]-knot[l-2]); beta = 1.0 - alpha; data[l+1]=(data[l]-alpha*alpha*data[l-1]-beta*beta*data[l+2]) /(2.0*alpha*beta); data[l+1]=2.0*(alpha*data[l+1]+beta*data[l+2])/3.0+data[l+2]/3.0; } } :::::::::::::: bez_to_points. :::::::::::::: void bez_to_points(degree,npoints,coeff,points) /* Converts Bezier curve into point sequence. Works on one coordinate only. Input: degree: degree of curve. npoints: # of coordinates to be generated. (counting from 0!) coeff: coordinates of control polygon. Output: points: coordinates of points on curve. Remark: For a 2D curve, this routine needs to be called twice, once for the x-coordinates and once for y. */ int degree, npoints; float coeff[],points[]; { float t,delt; int i; float hornbez(); int k; delt=1.0/(float)npoints; t=0.0; for(i=0; i<=npoints; i++) { points[i]=hornbez(degree,coeff,t); t = t+delt; } } :::::::::::::: bez_to_power. :::::::::::::: void bezier_to_power(degree,bez,coeff) /* Converts Bezier form to power (monomial) form. Works on one coordinate only. Input: degree: degree of curve. bez: coefficients of Bezier form Output: coeff: coefficients of power form. Remark: For a 2D curve, this routine needs to be called twice, once for the x-coordinates and once for y. */ int degree; float coeff[], bez[]; { float i_factorial, n_r; int i; differences(degree,bez,coeff); /* compute forward differences */ /* and store them in coeff. */ /* Note that i_factorial is int. */ /* For high degrees: danger! */ coeff[0]=bez[0]; i_factorial=1; n_r=1; for (i=1; i<=degree; i++) { i_factorial=i_factorial*i; n_r= n_r*(degree-i+1); coeff[i]=n_r*coeff[i]/i_factorial; } } :::::::::::::: bspl.dat :::::::::::::: 43 3 1 15 1.2 0 1.2 0.7 1.2 1.4 1.2 2 2.1 2 3 2.3 3 3 3 8 3 14 3 18 3 19.2 2.5 20 0.8 20 0.8 20.7 0.8 21.4 0.8 22 2.2 22 4.8 22 6.5 22 6.5 21.3 6.5 20.5 6.5 19.8 8.1 22 9 23 10.7 23 11.9 23 13 21.5 13 19 13 16 12 15 11 15 10 15 9.3 16.5 9 19 7.7 16.9 7 15 7 10 7 4 7.8 2.2 10 2 10 1.4 10 0.7 10 0 7 0 4 0 1.2 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 This file generates the letter 'r', as piecewise cubic B-spline curve with triple knots everywhere. It is read by the main progam deboormain.c. :::::::::::::: bspl_kappas.c :::::::::::::: #include #include extern FILE *outfile; void bspl_kappas(bspl_x,bspl_y,bspl_w,knot,l,dense) /* writes curvatures of cubic rational B-spline curve into a file. input: bspl_x,bspl_y: 2D rat. B-spline polygon bspl_w: the B-spline weights knot: the knot sequence dense: how many curvature values to compute per interval l: no. of intervals output: written into file outfile */ float bspl_x[],bspl_y[],bspl_w[],knot[]; int dense,l; { float bez_x[300],bez_y[300], bez_w[300]; float bleftx[4],blefty[4],brightx[4],brighty[4]; float wleft[4], wright[4],coeffx[4],coeffy[4],weight[4]; float dist,t,delt,h,u,diff; int i,j,i3; float curvature_0(),curvature_1(),abs(); /* first, convert B-spline to Bezier: */ ratbspline_to_bezier(bspl_x,bspl_y,bspl_w,knot,l, bez_x,bez_y,bez_w); /* Now plot kappas for each interval. */ fprintf(outfile,"%d %d\n",dense*l,dense); for(i=0; i int check_flat(bx,by,degree,tol) /* Checks if a polygon is flat. If all points are closer than tol to the connection of the two endpoints, then it is flat. Crashes if the endpoints are identical. Input: bx,by, degree: the Bezier curve tol: tolerance */ float bx[],by[]; int degree; float tol; { float dist; int i; float height(); for (i=1; i tol) return(0); } return(1); } :::::::::::::: conic_weight.c :::::::::::::: #include float conic_weight(b0,b1,b2,p) /* Input: b0,b1,b2: conic control polygon p: point on conic Output: weight of b1 (assuming standard form). For method, check Farin 14.5, 14.6. */ float b0[],b1[],b2[],p[]; { float area(),length_2(); float tau0, tau2 , t,t1, d, dist, weight; float b11[2], b10[2]; tau0=area(b1,p,b2); tau2=area(b1,b0,p); return(area(b0,b2,p)/(2.0*sqrt(tau0*tau2))); /* weight of b1 */ } :::::::::::::: curvature_0.c :::::::::::::: #include float curvature_0(bez_x,bez_y,weight,degree) /* computes curvature of rational Bezier curve at t=0 */ float bez_x[], bez_y[], weight[]; int degree; { float b0[2],b1[2],b2[2]; float dist; float area(); b0[0]=bez_x[0]; b1[0]=bez_x[1]; b2[0]=bez_x[2]; b0[1]=bez_y[0]; b1[1]=bez_y[1]; b2[1]=bez_y[2]; dist = sqrt( (b1[0]-b0[0])*(b1[0]-b0[0])+ (b1[1]-b0[1])*(b1[1]-b0[1]) ); return (2.0*(degree-1)*weight[0]*weight[2]*area(b0,b1,b2) /(degree*weight[1]*weight[1]*dist*dist*dist)); } :::::::::::::: deboor.c :::::::::::::: float deboor(degree,coeff,knot,u,i) /* uses de Boor algorithm to compute one coordinate on B-spline curve for param. value u in interval i. input: degree: polynomial degree of each piece of curve coeff: B-spline control points knot: knot sequence u: evaluation abscissa i: u's interval: u[i]<= u < u[i+1] output: coordinate value. */ float coeff[],knot[]; float u; int degree,i; { int k,j; float t1,t2; float coeffa[30]; /* might need adjustment! */ for (j=i-degree+1; j<=i+1; j++)coeffa[j]=coeff[j]; for (k=1; k<= degree; k++) for ( j=i+1 ;j>=i-degree+k+1; j--) { t1= (knot[j+degree-k] - u )/(knot[j+degree-k]-knot[j-1]); t2= 1.0-t1; coeffa[j]=t1* coeffa[j-1]+t2* coeffa[j]; } return (coeffa[i+1]); } :::::::::::::: deboormain.c :::::::::::::: #include #include FILE *file, *outfile, *psfile; main() { int i,j,l,polygon,buttno,l2,dense,degree,l21,l2n; int index[2],numpts; float points_x[1000],points_y[1000]; float mmbox[4], del_x, del_y; float bspl_x[200],bspl_y[200],knot[200]; float dum,x,y,xx,yy,tight,scale_x,scale_y; /* ----------------------------- */ file = fopen("bspl.dat","r"); outfile= fopen("dch.dat","w"); psfile= fopen("db.ps","w"); fscanf(file,"%d", &l); fscanf(file,"%d", °ree); fscanf(file,"%d", &polygon); fscanf(file,"%d", &dense); fscanf(file,"\n"); l2=l+degree-1; for(i=0; i <= l2 ; i++) { fscanf(file,"%f",&dum); bspl_x[i]= dum; fscanf(file,"%f",&dum); bspl_y[i]= dum; } fscanf(file,"\n"); /* for(i=0;i<=l2;i++) { printf("(%f,%f),(%d,%d) ", bspl_x[i],bspl_y[i],l,dense); printf("\n"); } */ l2n = l + 2*degree - 2; for(i=0; i <= l2n ; i++) { fscanf(file,"%f",&dum); knot[i]= dum; } fclose(file); fclose(outfile); minmax(bspl_x,bspl_y,l2,mmbox); del_x=mmbox[1]-mmbox[0]; del_y=mmbox[3]-mmbox[2]; if(del_x > del_y) mmbox[3]=mmbox[2]+del_x; else mmbox[1]=mmbox[0]+del_y; scale_x=350.0/(mmbox[1]-mmbox[0]); scale_y=350.0/(mmbox[3]-mmbox[2]); bspl_to_points(degree,l,bspl_x,knot,dense,points_x,&numpts); bspl_to_points(degree,l,bspl_y,knot,dense,points_y,&numpts); /*************** ps output ********************************/ /* macro to mark B-spline vertex:*/ fprintf(psfile,"/blackbox\n"); fprintf(psfile,"{0 setgray\n"); fprintf(psfile,"-3.5 -3.5 rlineto\n"); fprintf(psfile,"7 0 rlineto\n"); fprintf(psfile,"0 7 rlineto\n"); fprintf(psfile,"-7 0 rlineto\n"); fprintf(psfile,"0 -7 rlineto\n"); fprintf(psfile,"closepath fill} def\n"); fprintf(psfile,"/whitebox\n"); fprintf(psfile,"{1 setgray\n"); fprintf(psfile,"-3 -3 rlineto\n"); fprintf(psfile,"6 0 rlineto\n"); fprintf(psfile,"0 6 rlineto\n"); fprintf(psfile,"-6 0 rlineto\n"); fprintf(psfile,"0 -6 rlineto\n"); fprintf(psfile,"closepath fill} def\n"); /* plot curve */ fprintf(psfile,"3 setlinewidth \n"); fprintf(psfile,"0 setgray\n"); fprintf(psfile,"200 400 translate\n"); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(points_x[0]-mmbox[0]), scale_y*(points_y[0]-mmbox[2])); for( j=1; j0) /* plot B-spline polygon: */ { fprintf(psfile,"0.0 setgray\n "); fprintf(psfile,"1 setlinewidth\n "); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(bspl_x[0]-mmbox[0]), scale_y*(bspl_y[0]-mmbox[2])); for(j=1; j<= l2; j++) { fprintf(psfile,"%f %f lineto\n", scale_x*(bspl_x[j]-mmbox[0]), scale_y*(bspl_y[j]-mmbox[2])); } fprintf(psfile,"stroke \n"); /***** plot control vertices: ************/ for(j=0; j<=l2; j++) { fprintf(psfile,"%f %f moveto\n", scale_x*(bspl_x[j]-mmbox[0]), scale_y*(bspl_y[j]-mmbox[2])); fprintf(psfile,"blackbox \n"); if (j!=0 && j!=l2) { fprintf(psfile,"%f %f moveto\n", scale_x*(bspl_x[j]-mmbox[0]), scale_y*(bspl_y[j]-mmbox[2])); fprintf(psfile,"whitebox \n"); } } } fprintf(psfile,"showpage \n"); fclose(psfile); /***********************************************************/ } :::::::::::::: decas.c :::::::::::::: float decas(degree,coeff,t) /* uses de Casteljau to compute one coordinate value of a Bezier curve. Has to be called for each coordinate (x,y, and/or z) of a control polygon. Input: degree: degree of curve. coeff: array with coefficients of curve. t: parameter value. Output: coordinate value. */ float coeff[]; float t; int degree; { int r,i; float t1; float coeffa[30]; /* an auxiliary array. Change dim. if too small*/ t1 = 1.0 - t; for(i=0; i<=degree; i++) coeffa[i]=coeff[i]; /* save input */ for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) { coeffa[i]= t1* coeffa[i] + t * coeffa[i+1] ; } return (coeffa[0]); } :::::::::::::: decas.ps :::::::::::::: 300 350 translate 1.3 2.0 scale 0.1 setlinewidth newpath -131.250000 125.000000 moveto -131.250000 125.000000 lineto 87.500000 75.000000 lineto 87.500000 25.000000 lineto 0.000000 25.000000 lineto stroke newpath -131.250000 125.000000 moveto -131.250000 125.000000 lineto 87.500000 75.000000 lineto 87.500000 25.000000 lineto stroke newpath -131.250000 125.000000 moveto -131.250000 125.000000 lineto 87.500000 75.000000 lineto stroke newpath -131.250000 125.000000 moveto -131.250000 125.000000 lineto stroke newpath -131.250000 125.000000 moveto -125.781250 123.749995 lineto 87.500000 73.750001 lineto 85.312502 25.000000 lineto 0.000000 22.499999 lineto stroke newpath -125.781250 123.749995 moveto -120.449217 122.499990 lineto 87.445311 72.531253 lineto 83.179688 24.937500 lineto stroke newpath -120.449217 122.499990 moveto -115.251856 121.250772 lineto 87.338672 71.341407 lineto stroke newpath -115.251856 121.250772 moveto -110.187091 120.003033 lineto stroke newpath -131.250000 125.000000 moveto -120.312500 122.500002 lineto 87.500000 72.500002 lineto 83.124999 25.000000 lineto 0.000000 20.000000 lineto stroke newpath -120.312500 122.500002 moveto -109.921877 120.000005 lineto 87.281250 70.125002 lineto 78.968748 24.750000 lineto stroke newpath -109.921877 120.000005 moveto -100.061724 117.506254 lineto 86.865624 67.856252 lineto stroke newpath -100.061724 117.506254 moveto -90.715361 115.023756 lineto stroke newpath -131.250000 125.000000 moveto -114.843750 121.249998 lineto 87.500000 71.249998 lineto 80.937501 25.000000 lineto 0.000000 17.500000 lineto stroke newpath -114.843750 121.249998 moveto -99.667971 117.499995 lineto 87.007812 67.781246 lineto 74.867190 24.437501 lineto stroke newpath -99.667971 117.499995 moveto -85.667285 113.771093 lineto 86.097264 64.530462 lineto stroke newpath -85.667285 113.771093 moveto -72.784945 110.078049 lineto stroke newpath -131.250000 125.000000 moveto -109.375000 120.000005 lineto 87.500000 69.999999 lineto 78.749998 25.000000 lineto 0.000000 15.000001 lineto stroke newpath -109.375000 120.000005 moveto -89.687498 115.000010 lineto 86.625001 65.499997 lineto 70.875000 23.999999 lineto stroke newpath -89.687498 115.000010 moveto -72.056248 110.050011 lineto 85.050000 61.350000 lineto stroke newpath -72.056248 110.050011 moveto -56.345624 105.180013 lineto stroke newpath -131.250000 125.000000 moveto -103.906250 118.750000 lineto 87.500000 68.750000 lineto 76.562500 25.000000 lineto 0.000000 12.500000 lineto stroke newpath -103.906250 118.750000 moveto -79.980469 112.500000 lineto 86.132812 63.281250 lineto 66.992188 23.437500 lineto stroke newpath -79.980469 112.500000 moveto -59.216309 106.347656 lineto 83.740234 58.300781 lineto stroke newpath -59.216309 106.347656 moveto -41.346741 100.341797 lineto stroke newpath -131.250000 125.000000 moveto -98.437500 117.499995 lineto 87.500000 67.500001 lineto 74.375002 25.000000 lineto 0.000000 10.000000 lineto stroke newpath -98.437500 117.499995 moveto -70.546873 109.999990 lineto 85.531252 61.124998 lineto 63.218752 22.750001 lineto stroke newpath -70.546873 109.999990 moveto -47.135153 102.668738 lineto 82.184380 55.368751 lineto stroke newpath -47.135153 102.668738 moveto -27.737224 95.573741 lineto stroke newpath -131.250000 125.000000 moveto -92.968750 116.250002 lineto 87.500000 66.250002 lineto 72.187499 25.000000 lineto 0.000000 7.500000 lineto stroke newpath -92.968750 116.250002 moveto -61.386721 107.500005 lineto 84.820314 59.031254 lineto 59.554684 21.937500 lineto stroke newpath -61.386721 107.500005 moveto -35.800490 99.017972 lineto 80.398828 52.539849 lineto stroke newpath -35.800490 99.017972 moveto -15.465610 90.884298 lineto stroke newpath -131.250000 125.000000 moveto -87.500000 114.999998 lineto 87.500000 64.999998 lineto 70.000001 25.000000 lineto 0.000000 5.000000 lineto stroke newpath -87.500000 114.999998 moveto -52.500002 104.999995 lineto 83.999998 56.999999 lineto 55.999999 20.999999 lineto stroke newpath -52.500002 104.999995 moveto -25.200002 95.399994 lineto 78.399997 49.800000 lineto stroke newpath -25.200002 95.399994 moveto -4.480002 86.279994 lineto stroke newpath -131.250000 125.000000 moveto -82.031250 113.750005 lineto 87.500000 63.749999 lineto 67.812498 25.000000 lineto 0.000000 2.500000 lineto stroke newpath -82.031250 113.750005 moveto -43.886717 102.499998 lineto 83.070310 55.031252 lineto 52.554686 19.937500 lineto stroke newpath -43.886717 102.499998 moveto -15.321385 91.819531 lineto 76.204295 47.135156 lineto stroke newpath -15.321385 91.819531 moveto 5.271893 81.765544 lineto stroke newpath -131.250000 125.000000 moveto -76.562500 112.500000 lineto 87.500000 62.500000 lineto 65.625000 25.000000 lineto 0.000000 0.000000 lineto stroke newpath -76.562500 112.500000 moveto -35.546875 100.000000 lineto 82.031250 53.125000 lineto 49.218750 18.750000 lineto stroke newpath -35.546875 100.000000 moveto -6.152344 88.281250 lineto 73.828125 44.531250 lineto stroke newpath -6.152344 88.281250 moveto 13.842773 77.343750 lineto stroke newpath -131.250000 125.000000 moveto -71.093750 111.249995 lineto 87.500000 61.250001 lineto 63.437502 25.000000 lineto 0.000000 -2.500000 lineto stroke newpath -71.093750 111.249995 moveto -27.480469 97.499996 lineto 80.882812 51.281250 lineto 45.992187 17.437500 lineto stroke newpath -27.480469 97.499996 moveto 2.319433 84.789842 lineto 71.287888 41.974220 lineto stroke newpath 2.319433 84.789842 moveto 21.285758 73.015547 lineto stroke newpath -131.250000 125.000000 moveto -65.625000 110.000002 lineto 87.500000 60.000002 lineto 61.249999 25.000000 lineto 0.000000 -5.000000 lineto stroke newpath -65.625000 110.000002 moveto -19.687499 95.000005 lineto 79.624997 49.500000 lineto 42.874998 16.000000 lineto stroke newpath -19.687499 95.000005 moveto 10.106250 81.350005 lineto 68.599998 39.450002 lineto stroke newpath 10.106250 81.350005 moveto 27.654374 68.780005 lineto stroke newpath -131.250000 125.000000 moveto -60.156250 108.749998 lineto 87.500000 58.749998 lineto 59.062501 25.000000 lineto 0.000000 -7.500000 lineto stroke newpath -60.156250 108.749998 moveto -12.167968 92.499995 lineto 78.257815 47.781247 lineto 39.867187 14.437500 lineto stroke newpath -12.167968 92.499995 moveto 17.220411 77.966404 lineto 65.780862 36.944529 lineto stroke newpath 17.220411 77.966404 moveto 33.002557 64.634293 lineto stroke newpath -131.250000 125.000000 moveto -54.687500 107.500005 lineto 87.500000 57.499999 lineto 56.874998 25.000000 lineto 0.000000 -10.000000 lineto stroke newpath -54.687500 107.500005 moveto -4.921875 90.000004 lineto 76.781250 46.125001 lineto 36.968749 12.750000 lineto stroke newpath -4.921875 90.000004 moveto 23.674219 74.643755 lineto 62.846873 34.443751 lineto stroke newpath 23.674219 74.643755 moveto 37.384649 60.573751 lineto stroke newpath -131.250000 125.000000 moveto -49.218750 106.250000 lineto 87.500000 56.250000 lineto 54.687500 25.000000 lineto 0.000000 -12.500000 lineto stroke newpath -49.218750 106.250000 moveto 2.050781 87.500000 lineto 75.195312 44.531250 lineto 34.179688 10.937500 lineto stroke newpath 2.050781 87.500000 moveto 29.479980 71.386719 lineto 59.814453 31.933594 lineto stroke newpath 29.479980 71.386719 moveto 40.855408 56.591797 lineto stroke newpath -131.250000 125.000000 moveto -43.750000 104.999995 lineto 87.500000 55.000001 lineto 52.500002 25.000000 lineto 0.000000 -15.000001 lineto stroke newpath -43.750000 104.999995 moveto 8.750000 84.999996 lineto 73.500003 43.000001 lineto 31.500001 9.000000 lineto stroke newpath 8.750000 84.999996 moveto 34.650002 68.199998 lineto 56.700000 29.400000 lineto stroke newpath 34.650002 68.199998 moveto 43.470000 52.679998 lineto stroke newpath -131.250000 125.000000 moveto -38.281250 103.750002 lineto 87.500000 53.750002 lineto 50.312499 25.000000 lineto 0.000000 -17.500000 lineto stroke newpath -38.281250 103.750002 moveto 15.175782 82.500005 lineto 71.695311 41.531253 lineto 28.929687 6.937500 lineto stroke newpath 15.175782 82.500005 moveto 39.196583 65.088284 lineto 53.519922 26.828909 lineto stroke newpath 39.196583 65.088284 moveto 45.284002 48.828050 lineto stroke newpath -131.250000 125.000000 moveto -32.812500 102.499998 lineto 87.500000 52.499998 lineto 48.125001 25.000000 lineto 0.000000 -20.000000 lineto stroke newpath -32.812500 102.499998 moveto 21.328126 79.999995 lineto 69.781251 40.124997 lineto 26.468751 4.750000 lineto stroke newpath 21.328126 79.999995 moveto 43.132032 62.056243 lineto 50.290626 24.206248 lineto stroke newpath 43.132032 62.056243 moveto 46.353400 45.023745 lineto stroke newpath -131.250000 125.000000 moveto -27.343750 101.250005 lineto 87.500000 51.249999 lineto 45.937498 25.000000 lineto 0.000000 -22.499999 lineto stroke newpath -27.343750 101.250005 moveto 27.207031 77.500004 lineto 67.757809 38.781250 lineto 24.117187 2.437500 lineto stroke newpath 27.207031 77.500004 moveto 46.468651 59.108597 lineto 47.028514 21.517968 lineto stroke newpath 46.468651 59.108597 moveto 46.734584 41.253048 lineto stroke newpath -131.250000 125.000000 moveto -21.875000 100.000000 lineto 87.500000 50.000000 lineto 43.750000 25.000000 lineto 0.000000 -25.000000 lineto stroke newpath -21.875000 100.000000 moveto 32.812500 75.000000 lineto 65.625000 37.500000 lineto 21.875000 0.000000 lineto stroke newpath 32.812500 75.000000 moveto 49.218750 56.250000 lineto 43.750000 18.750000 lineto stroke newpath 49.218750 56.250000 moveto 46.484375 37.500000 lineto stroke newpath -131.250000 125.000000 moveto -16.406250 98.750001 lineto 87.500000 48.750001 lineto 41.562499 25.000000 lineto 0.000000 -27.500001 lineto stroke newpath -16.406250 98.750001 moveto 38.144531 72.500002 lineto 63.382813 36.281252 lineto 19.742187 -2.562500 lineto stroke newpath 38.144531 72.500002 moveto 51.394628 53.485161 lineto 40.471483 15.888283 lineto stroke newpath 51.394628 53.485161 moveto 45.659976 33.746800 lineto stroke newpath -131.250000 125.000000 moveto -10.937500 97.500002 lineto 87.500000 47.499999 lineto 39.374999 25.000000 lineto 0.000000 -30.000001 lineto stroke newpath -10.937500 97.500002 moveto 43.203126 69.999999 lineto 61.031249 35.124999 lineto 17.718750 -5.250001 lineto stroke newpath 43.203126 69.999999 moveto 53.008593 50.818747 lineto 37.209374 12.918749 lineto stroke newpath 53.008593 50.818747 moveto 44.319022 29.973748 lineto stroke newpath -131.250000 125.000000 moveto -5.468750 96.249998 lineto 87.500000 46.250001 lineto 37.187501 25.000000 lineto 0.000000 -32.499999 lineto stroke newpath -5.468750 96.249998 moveto 47.988279 67.500001 lineto 58.570313 34.031251 lineto 15.804688 -8.062499 lineto stroke newpath 47.988279 67.500001 moveto 54.072948 48.255470 lineto 33.980078 9.827345 lineto stroke newpath 54.072948 48.255470 moveto 42.519547 26.159298 lineto stroke newpath -131.250000 125.000000 moveto 0.000000 94.999999 lineto 87.500000 44.999999 lineto 35.000001 25.000000 lineto 0.000000 -34.999999 lineto stroke newpath 0.000000 94.999999 moveto 52.500002 64.999998 lineto 55.999999 32.999998 lineto 14.000000 -11.000000 lineto stroke newpath 52.500002 64.999998 moveto 54.600001 45.799997 lineto 30.800000 6.599999 lineto stroke newpath 54.600001 45.799997 moveto 40.319999 22.279999 lineto stroke newpath -131.250000 125.000000 moveto 5.468750 93.750000 lineto 87.500000 43.750000 lineto 32.812500 25.000000 lineto 0.000000 -37.500000 lineto stroke newpath 5.468750 93.750000 moveto 56.738281 62.500000 lineto 53.320312 32.031250 lineto 12.304688 -14.062500 lineto stroke newpath 56.738281 62.500000 moveto 54.602051 43.457031 lineto 27.685547 3.222656 lineto stroke newpath 54.602051 43.457031 moveto 37.779236 18.310547 lineto stroke newpath -131.250000 125.000000 moveto 10.937500 92.500001 lineto 87.500000 42.500001 lineto 30.624999 25.000000 lineto 0.000000 -40.000001 lineto stroke newpath 10.937500 92.500001 moveto 60.703127 60.000002 lineto 50.531249 31.125000 lineto 10.718750 -17.250000 lineto stroke newpath 60.703127 60.000002 moveto 54.091405 41.231251 lineto 24.653124 -0.318750 lineto stroke newpath 54.091405 41.231251 moveto 34.956522 14.223750 lineto stroke newpath -131.250000 125.000000 moveto 16.406250 91.250002 lineto 87.500000 41.249999 lineto 28.437499 25.000000 lineto 0.000000 -42.500001 lineto stroke newpath 16.406250 91.250002 moveto 64.394529 57.499999 lineto 47.632813 30.281249 lineto 9.242187 -20.562501 lineto stroke newpath 64.394529 57.499999 moveto 53.080373 39.127344 lineto 21.719140 -4.038282 lineto stroke newpath 53.080373 39.127344 moveto 31.911541 9.990546 lineto stroke newpath -131.250000 125.000000 moveto 21.875000 89.999998 lineto 87.500000 40.000001 lineto 26.250001 25.000000 lineto 0.000000 -44.999999 lineto stroke newpath 21.875000 89.999998 moveto 67.812498 55.000001 lineto 44.624999 29.500002 lineto 7.875000 -23.999999 lineto stroke newpath 67.812498 55.000001 moveto 51.581251 37.150002 lineto 18.900000 -7.949999 lineto stroke newpath 51.581251 37.150002 moveto 28.704377 5.580001 lineto stroke newpath -131.250000 125.000000 moveto 27.343750 88.749999 lineto 87.500000 38.749999 lineto 24.062501 25.000000 lineto 0.000000 -47.499999 lineto stroke newpath 27.343750 88.749999 moveto 70.957033 52.499998 lineto 41.507813 28.781250 lineto 6.617188 -27.562499 lineto stroke newpath 70.957033 52.499998 moveto 49.606349 35.303906 lineto 16.212109 -12.067968 lineto stroke newpath 49.606349 35.303906 moveto 25.395525 0.959297 lineto stroke newpath -131.250000 125.000000 moveto 32.812500 87.500000 lineto 87.500000 37.500000 lineto 21.875000 25.000000 lineto 0.000000 -50.000000 lineto stroke newpath 32.812500 87.500000 moveto 73.828125 50.000000 lineto 38.281250 28.125000 lineto 5.468750 -31.250000 lineto stroke newpath 73.828125 50.000000 moveto 47.167969 33.593750 lineto 13.671875 -16.406250 lineto stroke newpath 47.167969 33.593750 moveto 22.045898 -3.906250 lineto stroke newpath -131.250000 125.000000 moveto 38.281250 86.250001 lineto 87.500000 36.250001 lineto 19.687499 25.000000 lineto 0.000000 -52.499998 lineto stroke newpath 38.281250 86.250001 moveto 76.425783 47.500002 lineto 34.945312 27.531251 lineto 4.429688 -35.062498 lineto stroke newpath 76.425783 47.500002 moveto 44.278420 32.024220 lineto 11.295703 -20.978904 lineto stroke newpath 44.278420 32.024220 moveto 18.716815 -9.053201 lineto stroke newpath -131.250000 125.000000 moveto 43.750000 85.000002 lineto 87.500000 34.999999 lineto 17.500000 25.000000 lineto 0.000000 -55.000001 lineto stroke newpath 43.750000 85.000002 moveto 78.749998 44.999999 lineto 31.500001 27.000001 lineto 3.500000 -39.000002 lineto stroke newpath 78.749998 44.999999 moveto 40.950000 30.599999 lineto 9.100000 -25.800002 lineto stroke newpath 40.950000 30.599999 moveto 15.470000 -14.520001 lineto stroke newpath -131.250000 125.000000 moveto 49.218750 83.749998 lineto 87.500000 33.750001 lineto 15.312500 25.000000 lineto 0.000000 -57.499999 lineto stroke newpath 49.218750 83.749998 moveto 80.800779 42.500001 lineto 27.945313 26.531249 lineto 2.679687 -43.062499 lineto stroke newpath 80.800779 42.500001 moveto 37.195019 29.325780 lineto 7.101172 -30.883592 lineto stroke newpath 37.195019 29.325780 moveto 12.367596 -20.346951 lineto stroke newpath -131.250000 125.000000 moveto 54.687500 82.499999 lineto 87.500000 32.499999 lineto 13.125001 25.000000 lineto 0.000000 -60.000002 lineto stroke newpath 54.687500 82.499999 moveto 82.578127 39.999998 lineto 24.281250 26.124999 lineto 1.968750 -47.250003 lineto stroke newpath 82.578127 39.999998 moveto 33.025781 28.206250 lineto 5.315625 -36.243752 lineto stroke newpath 33.025781 28.206250 moveto 9.472149 -26.576251 lineto stroke newpath -131.250000 125.000000 moveto 60.156250 81.250000 lineto 87.500000 31.250000 lineto 10.937500 25.000000 lineto 0.000000 -62.500000 lineto stroke newpath 60.156250 81.250000 moveto 84.082031 37.500000 lineto 20.507812 25.781250 lineto 1.367188 -51.562500 lineto stroke newpath 84.082031 37.500000 moveto 28.454590 27.246094 lineto 3.759766 -41.894531 lineto stroke newpath 28.454590 27.246094 moveto 6.846619 -33.251953 lineto stroke newpath -131.250000 125.000000 moveto 65.625000 80.000001 lineto 87.500000 30.000001 lineto 8.750000 25.000000 lineto 0.000000 -64.999998 lineto stroke newpath 65.625000 80.000001 moveto 85.312502 35.000002 lineto 16.625000 25.500000 lineto 0.875000 -56.000000 lineto stroke newpath 85.312502 35.000002 moveto 23.493750 26.449999 lineto 2.450000 -47.850001 lineto stroke newpath 23.493750 26.449999 moveto 4.554375 -40.420002 lineto stroke newpath -131.250000 125.000000 moveto 71.093750 78.750002 lineto 87.500000 28.749999 lineto 6.562500 25.000000 lineto 0.000000 -67.500001 lineto stroke newpath 71.093750 78.750002 moveto 86.269529 32.499999 lineto 12.632812 25.281250 lineto 0.492188 -60.562503 lineto stroke newpath 86.269529 32.499999 moveto 18.155566 25.822657 lineto 1.402734 -54.124224 lineto stroke newpath 18.155566 25.822657 moveto 2.659197 -48.128209 lineto stroke newpath -131.250000 125.000000 moveto 76.562500 77.499998 lineto 87.500000 27.500001 lineto 4.375000 25.000000 lineto 0.000000 -69.999999 lineto stroke newpath 76.562500 77.499998 moveto 86.953123 30.000001 lineto 8.531250 25.125000 lineto 0.218750 -65.249997 lineto stroke newpath 86.953123 30.000001 moveto 12.452343 25.368750 lineto 0.634375 -60.731250 lineto stroke newpath 12.452343 25.368750 moveto 1.225273 -56.426251 lineto stroke newpath -131.250000 125.000000 moveto 82.031250 76.249999 lineto 87.500000 26.249999 lineto 2.187500 25.000000 lineto 0.000000 -72.500002 lineto stroke newpath 82.031250 76.249999 moveto 87.363283 27.499998 lineto 4.320313 25.031251 lineto 0.054687 -70.062500 lineto stroke newpath 87.363283 27.499998 moveto 6.396387 25.092968 lineto 0.161328 -67.685157 lineto stroke newpath 6.396387 25.092968 moveto 0.317205 -65.365702 lineto stroke newpath -131.250000 125.000000 moveto 87.500000 75.000000 lineto 87.500000 25.000000 lineto 0.000000 25.000000 lineto 0.000000 -75.000000 lineto stroke newpath 87.500000 75.000000 moveto 87.500000 25.000000 lineto 0.000000 25.000000 lineto 0.000000 -75.000000 lineto stroke newpath 87.500000 25.000000 moveto 0.000000 25.000000 lineto 0.000000 -75.000000 lineto stroke newpath 0.000000 25.000000 moveto 0.000000 -75.000000 lineto stroke showpage :::::::::::::: decasmain.c :::::::::::::: #include #include /* to plot just one bez. curve */ FILE *file, *outfile, *psfile; main() { int i,j,jj,l,pol,buttno,dense,degree,l21,l2n; int index[2],numpts; float points_x[1000],points_y[1000]; float mmbox[4], del_x, del_y; float bez_x[200],bez_y[200],weight[20]; float cez_x[200],cez_y[200]; float coeff_x[200],coeff_y[200]; float x,y,scale_x,scale_y; float cx[100],cy[100],cw[100]; float xx,yy,dum; /* ----------------------------- */ file = fopen("bez.dat","r"); outfile= fopen("dch.dat","w"); psfile= fopen("decas.ps","w"); fscanf(file,"%d", °ree); fscanf(file,"%d", &pol); fscanf(file,"%d", &dense); fscanf(file,"\n"); for(i=0; i <= degree ; i++) { fscanf(file,"%f",&dum); bez_x[i]= dum; fscanf(file,"%f",&dum); bez_y[i]= dum; fscanf(file,"%f", &dum); weight[i]= dum; } fscanf(file,"\n"); /* for(i=0;i<=degree;i++) {xx=bez_x[i]; yy=bez_y[i]; printf("(%f,%f),(%d,%d) ", xx,yy,degree,dense); printf("\n"); } */ fclose(file); fclose(outfile); minmax(bez_x,bez_y,degree,mmbox); del_x=mmbox[1]-mmbox[0]; del_y=mmbox[3]-mmbox[2]; if(del_x > del_y) mmbox[3]=mmbox[2]+del_x; else mmbox[1]=mmbox[0]+del_y; scale_x=350.0/(mmbox[1]-mmbox[0]); scale_y=350.0/(mmbox[3]-mmbox[2]); ratbez_to_points(degree,50,bez_x,weight,points_x,1); ratbez_to_points(degree,50,bez_y,weight,points_y,1); /*************** ps output ********************************/ fprintf(psfile,"200 400 translate\n"); /***** plot bezier control polygon if pol=1: ************/ if (pol == 1) { fprintf(psfile,"0.0 setgray\n "); fprintf(psfile,"1 setlinewidth\n "); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(bez_x[0]-mmbox[0]), scale_y*(bez_y[0]-mmbox[2])); for(j=0; j<= degree; j++) { fprintf(psfile,"%f %f lineto\n", scale_x*(bez_x[j]-mmbox[0]), scale_y*(bez_y[j]-mmbox[2])); } fprintf(psfile,"stroke \n"); /***** plot control vertices: ************/ fprintf(psfile,"0.0 setgray\n "); for(j=1; j< degree ; j++) { xx=scale_x*(bez_x[j]-mmbox[0]); yy=scale_y*(bez_y[j]-mmbox[2]); fprintf(psfile,"%f %f %f %f %f arc stroke\n", xx,yy,3.0, 0.0, 360.0); } fprintf(psfile,"1.0 setgray\n "); for(j=1; j< degree; j++) { xx=scale_x*(bez_x[j]-mmbox[0]); yy=scale_y*(bez_y[j]-mmbox[2]); fprintf(psfile,"%f %f %f %f %f arc fill\n", xx,yy,2.80, 0.0, 360.0); } } /* plot curve */ fprintf(psfile,"3 setlinewidth \n"); fprintf(psfile,"0 setgray\n"); fprintf(psfile,"newpath \n"); xx = scale_x*(points_x[0]-mmbox[0]); yy = scale_y*(points_y[0]-mmbox[2]); fprintf(psfile,"%f %f moveto\n", xx,yy); for( j=1; j<=50 ; j++) { xx = scale_x*(points_x[j]-mmbox[0]); yy = scale_y*(points_y[j]-mmbox[2]); fprintf(psfile,"%f %f lineto\n", xx,yy); } fprintf(psfile,"stroke \n"); /**** fill in junction points black: **********/ fprintf(psfile,"1 setlinewidth \n"); fprintf(psfile,"0 setgray\n"); for(j=0; j<= dense; j=j+dense) { xx = scale_x*(points_x[j]-mmbox[0]); yy = scale_y*(points_y[j]-mmbox[2]); fprintf(psfile,"%f %f %f %f %f arc fill\n", xx,yy, 3.0, 0.0, 360.0); } fprintf(psfile,"showpage\n"); return; } :::::::::::::: differences.c :::::::::::::: void differences(degree,coeff,diffs) /* Computes all forward differences Delta^i(b_0). Has to be called for each coordinate (x,y, and/or z) of a control polygon. Input: degree: length (from 0) of coeff. coeff: array of coefficients. Output: diffs: diffs[i]= Delta^i(coeff[0]). */ float coeff[],diffs[]; int degree; { int r,i; float diffs1[20]; for(i=0; i<=degree; i++) diffs1[degree-i]=coeff[i]; for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) diffs1[i]= diffs1[i] - diffs1[i+1] ; for(i=0;i<=degree;i++) diffs[i]=diffs1[degree-i]; } :::::::::::::: dist.c :::::::::::::: #include float dist(a,b) /* finds distance between 2D points a and b. Input: a,b: points; */ float a[], b[]; { return(sqrt((a[0]-b[0])*(a[0]-b[0])+ (a[1]-b[1])*(a[1]-b[1]) ) ); } :::::::::::::: fair1.ps :::::::::::::: %this is the ps file for figure {fig:fair1} 60 600 translate -4.410441 -1.800180 translate /blackbox {0 setgray -3.5 -3.5 rlineto 7 0 rlineto 0 7 rlineto -7 0 rlineto 0 -7 rlineto closepath fill} def /whitebox {1 setgray -3 -3 rlineto 6 0 rlineto 0 6 rlineto -6 0 rlineto 0 -6 rlineto closepath fill} def /diamond {0 -5 rlineto 5 5 rlineto -5 5 rlineto -5 -5 rlineto 5 -5 rlineto closepath} def 3 setlinewidth newpath 23.627363 1.800180 moveto 22.470218 2.114314 lineto 21.360754 2.435516 lineto 20.297827 2.763576 lineto 19.280279 3.098287 lineto 18.306968 3.439439 lineto 17.376745 3.786825 lineto 16.488458 4.140236 lineto 15.640966 4.499464 lineto 14.833110 4.864299 lineto 14.063751 5.234534 lineto 13.331735 5.609960 lineto 12.635915 5.990370 lineto 11.975139 6.375552 lineto 11.348266 6.765301 lineto 10.754142 7.159407 lineto 10.191620 7.557662 lineto 9.659551 7.959859 lineto 9.156784 8.365784 lineto 8.682176 8.775236 lineto 8.234574 9.188002 lineto stroke newpath 8.234574 9.188002 moveto 7.812917 9.603874 lineto 7.416491 10.022641 lineto 7.044671 10.444090 lineto 6.696824 10.868012 lineto 6.372323 11.294192 lineto 6.070543 11.722419 lineto 5.790854 12.152481 lineto 5.532630 12.584171 lineto 5.295241 13.017270 lineto 5.078060 13.451570 lineto 4.880459 13.886860 lineto 4.701810 14.322926 lineto 4.541485 14.759554 lineto 4.398857 15.196539 lineto 4.273298 15.633666 lineto 4.164180 16.070721 lineto 4.070874 16.507495 lineto 3.992753 16.943772 lineto 3.929189 17.379346 lineto 3.879554 17.814003 lineto stroke newpath 3.879554 17.814003 moveto 3.843335 18.247635 lineto 3.820472 18.680566 lineto 3.811021 19.113221 lineto 3.815036 19.546023 lineto 3.832572 19.979400 lineto 3.863685 20.413776 lineto 3.908429 20.849580 lineto 3.966862 21.287242 lineto 4.039034 21.727179 lineto 4.125004 22.169823 lineto 4.224826 22.615601 lineto 4.338556 23.064935 lineto 4.466246 23.518248 lineto 4.607954 23.975980 lineto 4.763734 24.438544 lineto 4.933642 24.906370 lineto 5.117732 25.379885 lineto 5.316059 25.859510 lineto 5.528678 26.345682 lineto 5.755645 26.838818 lineto stroke newpath 5.755645 26.838818 moveto 5.997064 27.339173 lineto 6.253248 27.846311 lineto 6.524558 28.359624 lineto 6.811353 28.878492 lineto 7.113995 29.402311 lineto 7.432846 29.930470 lineto 7.768266 30.462353 lineto 8.120619 30.997364 lineto 8.490262 31.534874 lineto 8.877560 32.074282 lineto 9.282872 32.614977 lineto 9.706560 33.156346 lineto 10.148984 33.697773 lineto 10.610508 34.238659 lineto 11.091490 34.778388 lineto 11.592295 35.316352 lineto 12.113280 35.851935 lineto 12.654808 36.384521 lineto 13.217241 36.913509 lineto 13.800940 37.438292 lineto stroke newpath 13.800940 37.438292 moveto 14.406245 37.958341 lineto 15.033422 38.473509 lineto 15.682719 38.983734 lineto 16.354375 39.488945 lineto 17.048633 39.989088 lineto 17.765745 40.484101 lineto 18.505950 40.973922 lineto 19.269499 41.458489 lineto 20.056630 41.937734 lineto 20.867591 42.411605 lineto 21.702627 42.880034 lineto 22.561985 43.342965 lineto 23.445900 43.800321 lineto 24.354628 44.252059 lineto 25.288410 44.698106 lineto 26.247491 45.138410 lineto 27.232115 45.572898 lineto 28.242521 46.001498 lineto 29.278965 46.424179 lineto 30.341685 46.840860 lineto stroke newpath 30.341685 46.840860 moveto 31.431019 47.251588 lineto 32.547662 47.656848 lineto 33.692423 48.057250 lineto 34.866074 48.453359 lineto 36.069417 48.845778 lineto 37.303242 49.235110 lineto 38.568339 49.621932 lineto 39.865511 50.006861 lineto 41.195533 50.390468 lineto 42.559211 50.773350 lineto 43.957331 51.156103 lineto 45.390688 51.539332 lineto 46.860063 51.923605 lineto 48.366265 52.309538 lineto 49.910082 52.697712 lineto 51.492298 53.088723 lineto 53.113718 53.483167 lineto 54.775107 53.881624 lineto 56.477288 54.284708 lineto 58.221042 54.692999 lineto stroke newpath 58.221042 54.692999 moveto 60.006778 55.106826 lineto 61.833393 55.525502 lineto 63.699425 55.948063 lineto 65.603357 56.373534 lineto 67.543732 56.800962 lineto 69.519064 57.229390 lineto 71.527863 57.657844 lineto 73.568675 58.085388 lineto 75.639973 58.511031 lineto 77.740317 58.933828 lineto 79.868195 59.352814 lineto 82.022159 59.767035 lineto 84.200683 60.175506 lineto 86.402319 60.577294 lineto 88.625579 60.971425 lineto 90.868983 61.356942 lineto 93.131036 61.732879 lineto 95.410253 62.098267 lineto 97.705182 62.452161 lineto 100.014321 62.793599 lineto stroke newpath 100.014321 62.793599 moveto 102.336275 63.121831 lineto 104.670020 63.437016 lineto 107.014642 63.739561 lineto 109.369147 64.029809 lineto 111.732636 64.308160 lineto 114.104154 64.575000 lineto 116.482763 64.830703 lineto 118.867553 65.075666 lineto 121.257533 65.310248 lineto 123.651801 65.534838 lineto 126.049405 65.749827 lineto 128.449404 65.955592 lineto 130.850846 66.152503 lineto 133.252843 66.340959 lineto 135.654405 66.521337 lineto 138.054615 66.694016 lineto 140.452512 66.859381 lineto 142.847148 67.017788 lineto 145.237654 67.169660 lineto 147.623022 67.315359 lineto stroke newpath 147.623022 67.315359 moveto 150.002307 67.455187 lineto 152.374486 67.589165 lineto 154.738538 67.717241 lineto 157.093337 67.839330 lineto 159.437845 67.955381 lineto 161.771043 68.065332 lineto 164.091817 68.169116 lineto 166.399206 68.266698 lineto 168.692040 68.357980 lineto 170.969371 68.442922 lineto 173.230072 68.521456 lineto 175.473124 68.593527 lineto 177.697397 68.659048 lineto 179.901962 68.717994 lineto 182.085677 68.770283 lineto 184.247520 68.815859 lineto 186.386409 68.854659 lineto 188.501278 68.886604 lineto 190.591136 68.911660 lineto 192.654886 68.929760 lineto stroke newpath 192.654886 68.929760 moveto 194.692002 68.940902 lineto 196.704167 68.945425 lineto 198.693589 68.943747 lineto 200.662461 68.936232 lineto 202.612946 68.923309 lineto 204.547342 68.905377 lineto 206.467753 68.882827 lineto 208.376508 68.856088 lineto 210.275648 68.825529 lineto 212.167518 68.791576 lineto 214.054235 68.754617 lineto 215.938068 68.715076 lineto 217.821135 68.673319 lineto 219.705734 68.629790 lineto 221.594028 68.584862 lineto 223.488211 68.538955 lineto 225.390491 68.492464 lineto 227.303061 68.445776 lineto 229.228174 68.399329 lineto 231.167993 68.353495 lineto stroke newpath 231.167993 68.353495 moveto 233.124848 68.308588 lineto 235.101606 68.264505 lineto 237.101287 68.221071 lineto 239.126777 68.178052 lineto 241.181108 68.135274 lineto 243.267286 68.092543 lineto 245.388209 68.049650 lineto 247.547002 68.006412 lineto 249.746490 67.962613 lineto 251.989721 67.918071 lineto 254.279715 67.872580 lineto 256.619372 67.825961 lineto 259.011725 67.777977 lineto 261.459750 67.728482 lineto 263.966420 67.677244 lineto 266.534739 67.624076 lineto 269.167623 67.568782 lineto 271.868075 67.511154 lineto 274.639130 67.451015 lineto 277.483732 67.388155 lineto stroke newpath 277.483732 67.388155 moveto 280.404855 67.322376 lineto 283.405474 67.253482 lineto 286.488623 67.181295 lineto 289.657217 67.105585 lineto 292.914259 67.026175 lineto 296.262725 66.942868 lineto 299.705558 66.855449 lineto 303.245883 66.763756 lineto 306.886494 66.667551 lineto 310.630485 66.566669 lineto 314.480801 66.460893 lineto 318.440507 66.350045 lineto 322.512336 66.233896 lineto 326.699563 66.112283 lineto 331.005042 65.984996 lineto 335.431747 65.851834 lineto 339.982653 65.712611 lineto 344.660705 65.567096 lineto 349.468996 65.415144 lineto 354.410441 65.256525 lineto stroke 1 setlinewidth 23.627363 1.800180 3.000000 0.000000 360.000000 arc fill 8.234574 9.188002 3.000000 0.000000 360.000000 arc fill 3.879554 17.814003 3.000000 0.000000 360.000000 arc fill 5.755645 26.838818 3.000000 0.000000 360.000000 arc fill 13.800940 37.438292 3.000000 0.000000 360.000000 arc fill 30.341685 46.840860 3.000000 0.000000 360.000000 arc fill 58.221042 54.692999 3.000000 0.000000 360.000000 arc fill 100.014321 62.793599 3.000000 0.000000 360.000000 arc fill 147.623022 67.315359 3.000000 0.000000 360.000000 arc fill 192.654886 68.929760 3.000000 0.000000 360.000000 arc fill 231.167993 68.353495 3.000000 0.000000 360.000000 arc fill 277.483732 67.388155 3.000000 0.000000 360.000000 arc fill 354.410441 65.256525 3.000000 0.000000 360.000000 arc fill 0.0 setgray 2 setlinewidth newpath 23.627363 1.800180 moveto 15.751575 3.870387 lineto 6.510651 8.980898 lineto 2.992799 17.889288 lineto 4.795479 26.345968 lineto 12.359152 37.759747 lineto 28.573551 47.244815 lineto 55.396768 54.306164 lineto 99.165616 63.688508 lineto 148.026720 67.701408 lineto 194.465608 69.398009 lineto 230.040121 68.285102 lineto 272.381913 67.582538 lineto 321.017089 66.336632 lineto 354.410441 65.256525 lineto stroke 23.627363 1.800180 moveto blackbox 15.751575 3.870387 moveto blackbox 15.751575 3.870387 moveto whitebox 6.510651 8.980898 moveto blackbox 6.510651 8.980898 moveto whitebox 2.992799 17.889288 moveto blackbox 2.992799 17.889288 moveto whitebox 4.795479 26.345968 moveto blackbox 4.795479 26.345968 moveto whitebox 12.359152 37.759747 moveto blackbox 12.359152 37.759747 moveto whitebox 28.573551 47.244815 moveto blackbox 28.573551 47.244815 moveto whitebox 55.396768 54.306164 moveto blackbox 55.396768 54.306164 moveto whitebox 99.165616 63.688508 moveto blackbox 99.165616 63.688508 moveto whitebox 148.026720 67.701408 moveto blackbox 148.026720 67.701408 moveto whitebox 194.465608 69.398009 moveto blackbox 194.465608 69.398009 moveto whitebox 230.040121 68.285102 moveto blackbox 230.040121 68.285102 moveto whitebox 272.381913 67.582538 moveto blackbox 272.381913 67.582538 moveto whitebox 321.017089 66.336632 moveto blackbox 321.017089 66.336632 moveto whitebox 354.410441 65.256525 moveto blackbox -30 -400 translate 0.6 setgray 0.100000 setlinewidth 0.000000 281.481073 translate newpath 0.000000 0.000000 moveto 450.00 0.00 lineto stroke newpath 450.000000 0.000000 moveto 0.000000 0.000000 lineto 0.000000 -141.324718 lineto 1.875000 -150.632894 lineto 3.750000 -160.236690 lineto 5.625000 -170.072512 lineto 7.500000 -180.061594 lineto 9.375000 -190.109518 lineto 11.250000 -200.108076 lineto 13.125000 -209.932514 lineto 15.000000 -219.449469 lineto 16.875000 -228.512807 lineto 18.750000 -236.974498 lineto 20.625000 -244.682669 lineto 22.500001 -251.491199 lineto 24.374999 -257.261547 lineto 26.250000 -261.872696 lineto 28.125000 -265.221698 lineto 30.000000 -267.230239 lineto 31.875001 -267.844697 lineto 33.749999 -267.043746 lineto 35.625000 -264.829764 lineto 37.500000 -261.235924 lineto 39.374998 -261.234510 lineto 41.250001 -260.496176 lineto 43.124999 -259.045670 lineto 45.000002 -256.916590 lineto 46.875000 -254.147910 lineto 48.749998 -250.787539 lineto 50.625001 -246.884801 lineto 52.499999 -242.493348 lineto 54.375002 -237.667255 lineto 56.250000 -232.463935 lineto 58.124998 -226.935116 lineto 60.000001 -221.132978 lineto 61.874999 -215.108316 lineto 63.750002 -208.905236 lineto 65.625000 -202.565963 lineto 67.499998 -196.128015 lineto 69.375001 -189.624579 lineto 71.249999 -183.084602 lineto 73.125002 -176.531813 lineto 75.000000 -169.985671 lineto 76.874998 -172.671329 lineto 78.749996 -174.545587 lineto 80.625004 -175.578564 lineto 82.500002 -175.753178 lineto 84.375000 -175.070376 lineto 86.249998 -173.544866 lineto 88.124996 -171.208930 lineto 90.000004 -168.105729 lineto 91.875002 -164.292674 lineto 93.750000 -159.836695 lineto 95.624998 -154.812726 lineto 97.499996 -149.300523 lineto 99.375004 -143.383078 lineto 101.250002 -137.142991 lineto 103.125000 -130.662803 lineto 104.999998 -124.020813 lineto 106.874996 -117.290094 lineto 108.750004 -110.538023 lineto 110.625002 -103.824860 lineto 112.500000 -97.205644 lineto 114.374998 -97.834349 lineto 116.249996 -98.673735 lineto 118.125004 -99.712404 lineto 120.000002 -100.941821 lineto 121.875000 -102.354868 lineto 123.749998 -103.946332 lineto 125.624996 -105.711449 lineto 127.500004 -107.646442 lineto 129.375002 -109.747989 lineto 131.250000 -112.012753 lineto 133.124998 -114.438851 lineto 134.999996 -117.023903 lineto 136.875004 -119.762696 lineto 138.750002 -122.653315 lineto 140.625000 -125.690096 lineto 142.499998 -128.868259 lineto 144.374996 -132.181667 lineto 146.250004 -135.622713 lineto 148.125002 -139.180479 lineto 150.000000 -142.843582 lineto 151.875007 -142.545121 lineto 153.749996 -142.035519 lineto 155.625004 -141.316658 lineto 157.499993 -140.390432 lineto 159.375000 -139.264463 lineto 161.250007 -137.942994 lineto 163.124996 -136.434566 lineto 165.000004 -134.750110 lineto 166.874993 -132.893402 lineto 168.750000 -130.883913 lineto 170.625007 -128.725434 lineto 172.499996 -126.438837 lineto 174.375004 -124.029835 lineto 176.249993 -121.514053 lineto 178.125000 -118.904800 lineto 180.000007 -116.212990 lineto 181.874996 -113.455220 lineto 183.750004 -110.641938 lineto 185.624993 -107.787372 lineto 187.500000 -104.901017 lineto 189.375007 -99.051429 lineto 191.249996 -93.085601 lineto 193.125004 -87.078007 lineto 194.999993 -81.094623 lineto 196.875000 -75.190945 lineto 198.750007 -69.420130 lineto 200.624996 -63.820131 lineto 202.500004 -58.426069 lineto 204.374993 -53.262132 lineto 206.250000 -48.347307 lineto 208.125007 -43.693452 lineto 209.999996 -39.308165 lineto 211.875004 -35.192866 lineto 213.749993 -31.348502 lineto 215.625000 -27.769381 lineto 217.500007 -24.448860 lineto 219.374996 -21.378399 lineto 221.250004 -18.547084 lineto 223.124993 -15.944001 lineto 225.000000 -13.557763 lineto 226.875007 -14.651475 lineto 228.749996 -15.672590 lineto 230.625004 -16.641036 lineto 232.499993 -17.569149 lineto 234.375000 -18.471164 lineto 236.250007 -19.357523 lineto 238.124996 -20.235339 lineto 240.000004 -21.114579 lineto 241.874993 -22.000463 lineto 243.750000 -22.902955 lineto 245.625007 -23.823950 lineto 247.499996 -24.771517 lineto 249.375004 -25.750876 lineto 251.249993 -26.767246 lineto 253.125000 -27.824898 lineto 255.000007 -28.929522 lineto 256.874996 -30.086341 lineto 258.750004 -31.300101 lineto 260.624993 -32.576022 lineto 262.500000 -33.920268 lineto 264.375007 -32.514338 lineto 266.249996 -31.156329 lineto 268.125004 -29.842927 lineto 269.999993 -28.572702 lineto 271.875000 -27.344232 lineto 273.750007 -26.154673 lineto 275.624996 -25.001649 lineto 277.500004 -23.882312 lineto 279.374993 -22.795718 lineto 281.250000 -21.739015 lineto 283.125007 -20.709835 lineto 284.999996 -19.705328 lineto 286.875004 -18.724072 lineto 288.749993 -17.764167 lineto 290.625000 -16.821343 lineto 292.500007 -15.895603 lineto 294.374996 -14.983147 lineto 296.250004 -14.082081 lineto 298.124993 -13.190029 lineto 300.000000 -12.304146 lineto 301.875007 -12.420872 lineto 303.750014 -12.560848 lineto 305.624986 -12.725023 lineto 307.499993 -12.914347 lineto 309.375000 -13.130717 lineto 311.250007 -13.375082 lineto 313.125014 -13.648392 lineto 314.999986 -13.953967 lineto 316.874993 -14.292757 lineto 318.750000 -14.667608 lineto 320.625007 -15.081843 lineto 322.500014 -15.537832 lineto 324.374986 -16.039849 lineto 326.249993 -16.591213 lineto 328.125000 -17.197144 lineto 330.000007 -17.861438 lineto 331.875014 -18.592636 lineto 333.749986 -19.395007 lineto 335.624993 -20.277096 lineto 337.500000 -21.246964 lineto 339.375007 -20.827510 lineto 341.250014 -20.276146 lineto 343.124986 -19.590501 lineto 344.999993 -18.771047 lineto 346.875000 -17.820631 lineto 348.750007 -16.742104 lineto 350.625014 -15.544477 lineto 352.499986 -14.233920 lineto 354.374993 -12.825616 lineto 356.250000 -11.327633 lineto 358.125007 -9.758476 lineto 360.000014 -8.131906 lineto 361.874986 -6.465477 lineto 363.749993 -4.775798 lineto 365.625000 -3.081375 lineto 367.500007 -1.399762 lineto 369.375014 0.253381 lineto 371.249986 1.860972 lineto 373.124993 3.408777 lineto 375.000000 4.882560 lineto 376.875007 4.315538 lineto 378.750014 3.748990 lineto 380.624986 3.190508 lineto 382.499993 2.647211 lineto 384.375000 2.124317 lineto 386.250007 1.626571 lineto 388.125014 1.159193 lineto 389.999986 0.723606 lineto 391.874993 0.321234 lineto 393.750000 -0.044128 lineto 395.625007 -0.373903 lineto 397.500014 -0.668090 lineto 399.374986 -0.926690 lineto 401.249993 -1.152075 lineto 403.125000 -1.344721 lineto 405.000007 -1.507473 lineto 406.875014 -1.641755 lineto 408.749986 -1.750414 lineto 410.624993 -1.835349 lineto 412.500000 -1.898932 lineto 414.375007 -1.943534 lineto 416.250014 -1.971055 lineto 418.124986 -1.983866 lineto 419.999993 -1.983866 lineto 421.875000 -1.972953 lineto 423.750007 -1.952075 lineto 425.625014 -1.923605 lineto 427.499986 -1.888018 lineto 429.374993 -1.847686 lineto 431.250000 -1.803083 lineto 433.125007 -1.754685 lineto 435.000014 -1.703439 lineto 436.874986 -1.650770 lineto 438.749993 -1.596678 lineto 440.625000 -1.542111 lineto 442.500007 -1.487544 lineto 444.375014 -1.432977 lineto 446.249986 -1.378884 lineto 448.124993 -1.325266 lineto 450.000000 -1.273072 lineto 450.000000 -1.273072 lineto fill 0.0 setgray 0.3 setlinewidth newpath 0.000000 -281.481073 moveto 0.000000 18.518922 lineto 450.000000 18.518922 lineto 450.000000 -281.481073 lineto 0.000000 -281.481073 lineto stroke 0.0 setgray 0.000000 -141.324718 3.000000 0.000000 360.000000 arc stroke 37.500000 -261.235924 3.000000 0.000000 360.000000 arc stroke 75.000000 -169.985671 3.000000 0.000000 360.000000 arc stroke 112.500000 -97.205644 3.000000 0.000000 360.000000 arc stroke 150.000000 -142.843582 3.000000 0.000000 360.000000 arc stroke 187.500000 -104.901017 3.000000 0.000000 360.000000 arc stroke 225.000000 -13.557763 3.000000 0.000000 360.000000 arc stroke 262.500000 -33.920268 3.000000 0.000000 360.000000 arc stroke 300.000000 -12.304146 3.000000 0.000000 360.000000 arc stroke 337.500000 -21.246964 3.000000 0.000000 360.000000 arc stroke 375.000000 4.882560 3.000000 0.000000 360.000000 arc stroke 412.500000 -1.898932 3.000000 0.000000 360.000000 arc stroke 450.000000 -1.273072 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 0.000000 -141.324718 2.600000 0.000000 360.000000 arc fill 37.500000 -261.235924 2.600000 0.000000 360.000000 arc fill 75.000000 -169.985671 2.600000 0.000000 360.000000 arc fill 112.500000 -97.205644 2.600000 0.000000 360.000000 arc fill 150.000000 -142.843582 2.600000 0.000000 360.000000 arc fill 187.500000 -104.901017 2.600000 0.000000 360.000000 arc fill 225.000000 -13.557763 2.600000 0.000000 360.000000 arc fill 262.500000 -33.920268 2.600000 0.000000 360.000000 arc fill 300.000000 -12.304146 2.600000 0.000000 360.000000 arc fill 337.500000 -21.246964 2.600000 0.000000 360.000000 arc fill 375.000000 4.882560 2.600000 0.000000 360.000000 arc fill 412.500000 -1.898932 2.600000 0.000000 360.000000 arc fill 450.000000 -1.273072 2.600000 0.000000 360.000000 arc fill 0.0 setgray /Times-Roman findfont 15 scalefont setfont 460.000000 4.882560 moveto (max: 0.010)show 460.000000 -267.844697 moveto (min: -0.564)show showpage :::::::::::::: fair2.ps :::::::::::::: %this is the ps file for {fig:fair2} 60 600 translate -4.410441 -1.800180 translate /blackbox {0 setgray -3.5 -3.5 rlineto 7 0 rlineto 0 7 rlineto -7 0 rlineto 0 -7 rlineto closepath fill} def /whitebox {1 setgray -3 -3 rlineto 6 0 rlineto 0 6 rlineto -6 0 rlineto 0 -6 rlineto closepath fill} def /diamond {0 -5 rlineto 5 5 rlineto -5 5 rlineto -5 -5 rlineto 5 -5 rlineto closepath} def 3 setlinewidth newpath 23.627363 1.800180 moveto 22.465147 2.113562 lineto 21.340786 2.432575 lineto 20.253621 2.757112 lineto 19.202963 3.087067 lineto 18.188151 3.422333 lineto 17.208515 3.762804 lineto 16.263380 4.108373 lineto 15.352082 4.458936 lineto 14.473939 4.814382 lineto 13.628288 5.174609 lineto 12.814457 5.539508 lineto 12.031775 5.908974 lineto 11.279566 6.282898 lineto 10.557167 6.661176 lineto 9.863904 7.043701 lineto 9.199104 7.430368 lineto 8.562098 7.821067 lineto 7.952213 8.215693 lineto 7.368781 8.614142 lineto 6.811130 9.016304 lineto stroke newpath 6.811130 9.016304 moveto 6.278640 9.422078 lineto 5.770904 9.831378 lineto 5.287564 10.244119 lineto 4.828263 10.660217 lineto 4.392644 11.079590 lineto 3.980353 11.502155 lineto 3.591030 11.927826 lineto 3.224320 12.356525 lineto 2.879866 12.788162 lineto 2.557311 13.222658 lineto 2.256299 13.659927 lineto 1.976472 14.099891 lineto 1.717474 14.542458 lineto 1.478948 14.987553 lineto 1.260539 15.435087 lineto 1.061887 15.884980 lineto 0.882638 16.337147 lineto 0.722434 16.791502 lineto 0.580919 17.247968 lineto 0.457736 17.706457 lineto stroke newpath 0.457736 17.706457 moveto 0.352600 18.166893 lineto 0.265515 18.629212 lineto 0.196556 19.093371 lineto 0.145799 19.559307 lineto 0.113319 20.026965 lineto 0.099193 20.496300 lineto 0.103495 20.967249 lineto 0.126301 21.439766 lineto 0.167687 21.913792 lineto 0.227729 22.389275 lineto 0.306501 22.866161 lineto 0.404080 23.344400 lineto 0.520541 23.823928 lineto 0.655960 24.304701 lineto 0.810412 24.786663 lineto 0.983973 25.269762 lineto 1.176718 25.753940 lineto 1.388722 26.239138 lineto 1.620063 26.725317 lineto 1.870815 27.212414 lineto stroke newpath 1.870815 27.212414 moveto 2.141112 27.700376 lineto 2.431320 28.189151 lineto 2.741867 28.678703 lineto 3.073176 29.168962 lineto 3.425672 29.659889 lineto 3.799783 30.151437 lineto 4.195932 30.643547 lineto 4.614546 31.136185 lineto 5.056048 31.629287 lineto 5.520865 32.122809 lineto 6.009423 32.616700 lineto 6.522147 33.110915 lineto 7.059460 33.605393 lineto 7.621789 34.100099 lineto 8.209561 34.594976 lineto 8.823200 35.089974 lineto 9.463131 35.585046 lineto 10.129778 36.080135 lineto 10.823569 36.575204 lineto 11.544929 37.070196 lineto stroke newpath 11.544929 37.070196 moveto 12.294237 37.565047 lineto 13.071700 38.059648 lineto 13.877479 38.553876 lineto 14.711731 39.047602 lineto 15.574618 39.540693 lineto 16.466301 40.033042 lineto 17.386941 40.524501 lineto 18.336700 41.014974 lineto 19.315734 41.504305 lineto 20.324207 41.992392 lineto 21.362277 42.479096 lineto 22.430110 42.964298 lineto 23.527854 43.447865 lineto 24.655683 43.929681 lineto 25.813753 44.409626 lineto 27.002224 44.887557 lineto 28.221256 45.363360 lineto 29.471005 45.836901 lineto 30.751642 46.308068 lineto 32.063320 46.776729 lineto stroke newpath 32.063320 46.776729 moveto 33.406076 47.242755 lineto 34.779462 47.706012 lineto 36.182918 48.166377 lineto 37.615847 48.623694 lineto 39.077686 49.077831 lineto 40.567867 49.528668 lineto 42.085808 49.976049 lineto 43.630950 50.419864 lineto 45.202708 50.859949 lineto 46.800509 51.296184 lineto 48.423788 51.728428 lineto 50.071973 52.156555 lineto 51.744467 52.580404 lineto 53.440733 52.999871 lineto 55.160177 53.414809 lineto 56.902230 53.825074 lineto 58.666320 54.230540 lineto 60.451865 54.631053 lineto 62.258309 55.026497 lineto 64.085066 55.416735 lineto stroke newpath 64.085066 55.416735 moveto 65.931495 55.801639 lineto 67.796701 56.181151 lineto 69.679707 56.555247 lineto 71.579516 56.923858 lineto 73.495173 57.286954 lineto 75.425701 57.644492 lineto 77.370103 57.996429 lineto 79.327453 58.342743 lineto 81.296722 58.683353 lineto 83.276951 59.018251 lineto 85.267184 59.347376 lineto 87.266437 59.670698 lineto 89.273705 59.988157 lineto 91.288063 60.299737 lineto 93.308497 60.605372 lineto 95.334054 60.905041 lineto 97.363742 61.198684 lineto 99.396577 61.486263 lineto 101.431612 61.767743 lineto 103.467872 62.043076 lineto stroke newpath 103.467872 62.043076 moveto 105.504433 62.312238 lineto 107.540715 62.575254 lineto 109.576239 62.832180 lineto 111.610456 63.083041 lineto 113.642855 63.327893 lineto 115.672956 63.566775 lineto 117.700225 63.799730 lineto 119.724190 64.026818 lineto 121.744286 64.248056 lineto 123.760041 64.463508 lineto 125.770937 64.673209 lineto 127.776470 64.877210 lineto 129.776091 65.075538 lineto 131.769358 65.268260 lineto 133.755716 65.455406 lineto 135.734667 65.637021 lineto 137.705702 65.813154 lineto 139.668280 65.983833 lineto 141.621949 66.149121 lineto 143.566170 66.309061 lineto stroke newpath 143.566170 66.309061 moveto 145.500612 66.463683 lineto 147.425635 66.613056 lineto 149.341900 66.757232 lineto 151.249888 66.896249 lineto 153.150185 67.030171 lineto 155.043392 67.159058 lineto 156.930019 67.282955 lineto 158.810742 67.401932 lineto 160.686028 67.516021 lineto 162.556491 67.625294 lineto 164.422688 67.729800 lineto 166.285205 67.829592 lineto 168.144568 67.924710 lineto 170.001421 68.015237 lineto 171.856292 68.101209 lineto 173.709751 68.182688 lineto 175.562353 68.259720 lineto 177.414671 68.332353 lineto 179.267318 68.400663 lineto 181.120822 68.464691 lineto stroke newpath 181.120822 68.464691 moveto 182.975933 68.524482 lineto 184.833988 68.580076 lineto 186.696641 68.631502 lineto 188.565316 68.678761 lineto 190.441608 68.721891 lineto 192.327079 68.760918 lineto 194.223230 68.795855 lineto 196.131699 68.826752 lineto 198.053912 68.853599 lineto 199.991479 68.876445 lineto 201.945914 68.895308 lineto 203.918812 68.910205 lineto 205.911644 68.921158 lineto 207.926047 68.928210 lineto 209.963508 68.931373 lineto 212.025576 68.930674 lineto 214.113811 68.926133 lineto 216.229687 68.917759 lineto 218.374871 68.905609 lineto 220.550834 68.889690 lineto stroke newpath 220.550834 68.889690 moveto 222.759185 68.870020 lineto 225.001755 68.846611 lineto 227.280543 68.819490 lineto 229.597321 68.788631 lineto 231.954058 68.754055 lineto 234.352675 68.715771 lineto 236.795007 68.673778 lineto 239.283094 68.628112 lineto 241.818696 68.578733 lineto 244.403780 68.525680 lineto 247.040254 68.468957 lineto 249.730026 68.408569 lineto 252.474957 68.344503 lineto 255.276987 68.276802 lineto 258.138053 68.205443 lineto 261.060018 68.130450 lineto 264.044804 68.051826 lineto 267.094214 67.969561 lineto 270.210321 67.883692 lineto 273.394958 67.794205 lineto stroke newpath 273.394958 67.794205 moveto 276.649988 67.701112 lineto 279.977362 67.604418 lineto 283.379035 67.504145 lineto 286.856809 67.400275 lineto 290.412577 67.292826 lineto 294.048351 67.181810 lineto 297.765934 67.067228 lineto 301.567369 66.949100 lineto 305.454398 66.827410 lineto 309.429006 66.702179 lineto 313.493083 66.573411 lineto 317.648584 66.441125 lineto 321.897280 66.305292 lineto 326.241215 66.165967 lineto 330.682252 66.023122 lineto 335.222282 65.876783 lineto 339.863260 65.726946 lineto 344.606927 65.573607 lineto 349.455356 65.416805 lineto 354.410441 65.256525 lineto stroke 1 setlinewidth 23.627363 1.800180 3.000000 0.000000 360.000000 arc fill 6.811130 9.016304 3.000000 0.000000 360.000000 arc fill 0.457736 17.706457 3.000000 0.000000 360.000000 arc fill 1.870815 27.212414 3.000000 0.000000 360.000000 arc fill 11.544929 37.070196 3.000000 0.000000 360.000000 arc fill 32.063320 46.776729 3.000000 0.000000 360.000000 arc fill 64.085066 55.416735 3.000000 0.000000 360.000000 arc fill 103.467872 62.043076 3.000000 0.000000 360.000000 arc fill 143.566170 66.309061 3.000000 0.000000 360.000000 arc fill 181.120822 68.464691 3.000000 0.000000 360.000000 arc fill 220.550834 68.889690 3.000000 0.000000 360.000000 arc fill 273.394958 67.794205 3.000000 0.000000 360.000000 arc fill 354.410441 65.256525 3.000000 0.000000 360.000000 arc fill 0.0 setgray 2 setlinewidth newpath 23.627363 1.800180 moveto 15.751575 3.870387 lineto 5.137150 8.775765 lineto -0.740609 17.577070 lineto 0.571702 27.154707 lineto 9.678691 37.078578 lineto 29.983108 46.952155 lineto 62.768794 55.773179 lineto 103.452114 62.455547 lineto 144.229987 66.663096 lineto 181.024967 68.746441 lineto 218.395060 69.139285 lineto 268.699752 68.034572 lineto 321.017089 66.336632 lineto 354.410441 65.256525 lineto stroke 23.627363 1.800180 moveto blackbox 15.751575 3.870387 moveto blackbox 15.751575 3.870387 moveto whitebox 5.137150 8.775765 moveto blackbox 5.137150 8.775765 moveto whitebox -0.740609 17.577070 moveto blackbox -0.740609 17.577070 moveto whitebox 0.571702 27.154707 moveto blackbox 0.571702 27.154707 moveto whitebox 9.678691 37.078578 moveto blackbox 9.678691 37.078578 moveto whitebox 29.983108 46.952155 moveto blackbox 29.983108 46.952155 moveto whitebox 62.768794 55.773179 moveto blackbox 62.768794 55.773179 moveto whitebox 103.452114 62.455547 moveto blackbox 103.452114 62.455547 moveto whitebox 144.229987 66.663096 moveto blackbox 144.229987 66.663096 moveto whitebox 181.024967 68.746441 moveto blackbox 181.024967 68.746441 moveto whitebox 218.395060 69.139285 moveto blackbox 218.395060 69.139285 moveto whitebox 268.699752 68.034572 moveto blackbox 268.699752 68.034572 moveto whitebox 321.017089 66.336632 moveto blackbox 321.017089 66.336632 moveto whitebox 354.410441 65.256525 moveto blackbox -30 -400 translate 0.6 setgray 0.100000 setlinewidth 0.000000 286.338363 translate newpath 0.000000 0.000000 moveto 450.00 0.00 lineto stroke newpath 450.000000 0.000000 moveto 0.000000 0.000000 lineto 0.000000 -126.305411 lineto 1.875000 -133.145457 lineto 3.750000 -140.201608 lineto 5.625000 -147.451282 lineto 7.500000 -154.866004 lineto 9.375000 -162.410798 lineto 11.250000 -170.045374 lineto 13.125000 -177.723494 lineto 15.000000 -185.391393 lineto 16.875000 -192.991571 lineto 18.750000 -200.459498 lineto 20.625000 -207.727997 lineto 22.500001 -214.723389 lineto 24.374999 -221.373675 lineto 26.250000 -227.603591 lineto 28.125000 -233.338382 lineto 30.000000 -238.508198 lineto 31.875001 -243.045302 lineto 33.749999 -246.889457 lineto 35.625000 -249.987489 lineto 37.500000 -252.297423 lineto 39.374998 -256.862468 lineto 41.250001 -260.911994 lineto 43.124999 -264.407278 lineto 45.000002 -267.317674 lineto 46.875000 -269.617403 lineto 48.749998 -271.287096 lineto 50.625001 -272.317076 lineto 52.499999 -272.701993 lineto 54.375002 -272.446108 lineto 56.250000 -271.563936 lineto 58.124998 -270.068966 lineto 60.000001 -267.988034 lineto 61.874999 -265.350714 lineto 63.750002 -262.191403 lineto 65.625000 -258.549367 lineto 67.499998 -254.465989 lineto 69.375001 -249.985326 lineto 71.249999 -245.151499 lineto 73.125002 -240.009095 lineto 75.000000 -234.603821 lineto 76.874998 -234.551144 lineto 78.749996 -234.258171 lineto 80.625004 -233.727592 lineto 82.500002 -232.957791 lineto 84.375000 -231.952530 lineto 86.249998 -230.715577 lineto 88.124996 -229.252312 lineto 90.000004 -227.567560 lineto 91.875002 -225.669410 lineto 93.750000 -223.566433 lineto 95.624998 -221.266704 lineto 97.499996 -218.781518 lineto 99.375004 -216.122153 lineto 101.250002 -213.297757 lineto 103.125000 -210.322301 lineto 104.999998 -207.207624 lineto 106.874996 -203.965004 lineto 108.750004 -200.609485 lineto 110.625002 -197.152362 lineto 112.500000 -193.606019 lineto 114.374998 -193.399046 lineto 116.249996 -192.879217 lineto 118.125004 -192.047591 lineto 120.000002 -190.906330 lineto 121.875000 -189.462963 lineto 123.749998 -187.724461 lineto 125.624996 -185.701572 lineto 127.500004 -183.407771 lineto 129.375002 -180.853760 lineto 131.250000 -178.058394 lineto 133.124998 -175.036717 lineto 134.999996 -171.809141 lineto 136.875004 -168.394489 lineto 138.750002 -164.809968 lineto 140.625000 -161.079770 lineto 142.499998 -157.222174 lineto 144.374996 -153.258664 lineto 146.250004 -149.206991 lineto 148.125002 -145.089745 lineto 150.000000 -140.924100 lineto 151.875007 -136.060699 lineto 153.749996 -131.360726 lineto 155.625004 -126.822020 lineto 157.499993 -122.440822 lineto 159.375000 -118.214442 lineto 161.250007 -114.140196 lineto 163.124996 -110.211091 lineto 165.000004 -106.427671 lineto 166.874993 -102.782407 lineto 168.750000 -99.273681 lineto 170.625007 -95.893434 lineto 172.499996 -92.642211 lineto 174.375004 -89.511400 lineto 176.249993 -86.500466 lineto 178.125000 -83.602967 lineto 180.000007 -80.816197 lineto 181.874996 -78.133722 lineto 183.750004 -75.554998 lineto 185.624993 -73.074105 lineto 187.500000 -70.687295 lineto 189.375007 -67.208135 lineto 191.249996 -64.005832 lineto 193.125004 -61.057795 lineto 194.999993 -58.338761 lineto 196.875000 -55.832607 lineto 198.750007 -53.516217 lineto 200.624996 -51.376148 lineto 202.500004 -49.399504 lineto 204.374993 -47.569077 lineto 206.250000 -45.876266 lineto 208.125007 -44.307096 lineto 209.999996 -42.854582 lineto 211.875004 -41.509580 lineto 213.749993 -40.261880 lineto 215.625000 -39.106641 lineto 217.500007 -38.035799 lineto 219.374996 -37.044521 lineto 221.250004 -36.127964 lineto 223.124993 -35.279140 lineto 225.000000 -34.494286 lineto 226.875007 -33.145521 lineto 228.749996 -31.896207 lineto 230.625004 -30.738819 lineto 232.499993 -29.667441 lineto 234.375000 -28.673473 lineto 236.250007 -27.754766 lineto 238.124996 -26.903253 lineto 240.000004 -26.116788 lineto 241.874993 -25.388380 lineto 243.750000 -24.716954 lineto 245.625007 -24.098748 lineto 247.499996 -23.529997 lineto 249.375004 -23.008555 lineto 251.249993 -22.531192 lineto 253.125000 -22.097373 lineto 255.000007 -21.704410 lineto 256.874996 -21.350151 lineto 258.750004 -21.034059 lineto 260.624993 -20.755060 lineto 262.500000 -20.511539 lineto 264.375007 -20.215338 lineto 266.249996 -19.934727 lineto 268.125004 -19.669167 lineto 269.999993 -19.417584 lineto 271.875000 -19.180515 lineto 273.750007 -18.956347 lineto 275.624996 -18.747233 lineto 277.500004 -18.551559 lineto 279.374993 -18.368246 lineto 281.250000 -18.199987 lineto 283.125007 -18.041941 lineto 284.999996 -17.898947 lineto 286.875004 -17.767242 lineto 288.749993 -17.649515 lineto 290.625000 -17.544688 lineto 292.500007 -17.453838 lineto 294.374996 -17.374815 lineto 296.250004 -17.309771 lineto 298.124993 -17.258163 lineto 300.000000 -17.218920 lineto 301.875007 -17.475342 lineto 303.750014 -17.714023 lineto 305.624986 -17.937115 lineto 307.499993 -18.140854 lineto 309.375000 -18.324703 lineto 311.250007 -18.488663 lineto 313.125014 -18.631655 lineto 314.999986 -18.752608 lineto 316.874993 -18.849909 lineto 318.750000 -18.925169 lineto 320.625007 -18.975164 lineto 322.500014 -19.002580 lineto 324.374986 -19.004730 lineto 326.249993 -18.981078 lineto 328.125000 -18.934845 lineto 330.000007 -18.862273 lineto 331.875014 -18.765511 lineto 333.749986 -18.644019 lineto 335.624993 -18.498876 lineto 337.500000 -18.330078 lineto 339.375007 -18.387061 lineto 341.250014 -18.381686 lineto 343.124986 -18.313951 lineto 344.999993 -18.186548 lineto 346.875000 -18.001086 lineto 348.750007 -17.758641 lineto 350.625014 -17.462978 lineto 352.499986 -17.118396 lineto 354.374993 -16.728656 lineto 356.250000 -16.296450 lineto 358.125007 -15.828763 lineto 360.000014 -15.328823 lineto 361.874986 -14.802541 lineto 363.749993 -14.253144 lineto 365.625000 -13.684932 lineto 367.500007 -13.103818 lineto 369.375014 -12.515179 lineto 371.249986 -11.921163 lineto 373.124993 -11.326073 lineto 375.000000 -10.734745 lineto 376.875007 -10.188037 lineto 378.750014 -9.640789 lineto 380.624986 -9.097843 lineto 382.499993 -8.561348 lineto 384.375000 -8.034528 lineto 386.250007 -7.521149 lineto 388.125014 -7.022283 lineto 389.999986 -6.539545 lineto 391.874993 -6.075622 lineto 393.750000 -5.629976 lineto 395.625007 -5.204757 lineto 397.500014 -4.799429 lineto 399.374986 -4.415604 lineto 401.249993 -4.052206 lineto 403.125000 -3.709236 lineto 405.000007 -3.387232 lineto 406.875014 -3.084579 lineto 408.749986 -2.801280 lineto 410.624993 -2.537333 lineto 412.500000 -2.291125 lineto 414.375007 -2.062120 lineto 416.250014 -1.849780 lineto 418.124986 -1.653029 lineto 419.999993 -1.470793 lineto 421.875000 -1.303071 lineto 423.750007 -1.149326 lineto 425.625014 -1.006870 lineto 427.499986 -0.876240 lineto 429.374993 -0.756899 lineto 431.250000 -0.647235 lineto 433.125007 -0.547784 lineto 435.000014 -0.456397 lineto 436.874986 -0.373611 lineto 438.749993 -0.297814 lineto 440.625000 -0.229543 lineto 442.500007 -0.167722 lineto 444.375014 -0.111815 lineto 446.249986 -0.061283 lineto 448.124993 -0.015590 lineto 450.000000 0.025266 lineto 450.000000 0.025266 lineto fill 0.0 setgray 0.3 setlinewidth newpath 0.000000 -286.338363 moveto 0.000000 13.661629 lineto 450.000000 13.661629 lineto 450.000000 -286.338363 lineto 0.000000 -286.338363 lineto stroke 0.0 setgray 0.000000 -126.305411 3.000000 0.000000 360.000000 arc stroke 37.500000 -252.297423 3.000000 0.000000 360.000000 arc stroke 75.000000 -234.603821 3.000000 0.000000 360.000000 arc stroke 112.500000 -193.606019 3.000000 0.000000 360.000000 arc stroke 150.000000 -140.924100 3.000000 0.000000 360.000000 arc stroke 187.500000 -70.687295 3.000000 0.000000 360.000000 arc stroke 225.000000 -34.494286 3.000000 0.000000 360.000000 arc stroke 262.500000 -20.511539 3.000000 0.000000 360.000000 arc stroke 300.000000 -17.218920 3.000000 0.000000 360.000000 arc stroke 337.500000 -18.330078 3.000000 0.000000 360.000000 arc stroke 375.000000 -10.734745 3.000000 0.000000 360.000000 arc stroke 412.500000 -2.291125 3.000000 0.000000 360.000000 arc stroke 450.000000 0.025266 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 0.000000 -126.305411 2.600000 0.000000 360.000000 arc fill 37.500000 -252.297423 2.600000 0.000000 360.000000 arc fill 75.000000 -234.603821 2.600000 0.000000 360.000000 arc fill 112.500000 -193.606019 2.600000 0.000000 360.000000 arc fill 150.000000 -140.924100 2.600000 0.000000 360.000000 arc fill 187.500000 -70.687295 2.600000 0.000000 360.000000 arc fill 225.000000 -34.494286 2.600000 0.000000 360.000000 arc fill 262.500000 -20.511539 2.600000 0.000000 360.000000 arc fill 300.000000 -17.218920 2.600000 0.000000 360.000000 arc fill 337.500000 -18.330078 2.600000 0.000000 360.000000 arc fill 375.000000 -10.734745 2.600000 0.000000 360.000000 arc fill 412.500000 -2.291125 2.600000 0.000000 360.000000 arc fill 450.000000 0.025266 2.600000 0.000000 360.000000 arc fill 0.0 setgray /Times-Roman findfont 15 scalefont setfont 460.000000 0.025266 moveto (max: 0.000)show 460.000000 -272.701993 moveto (min: -0.507)show showpage :::::::::::::: fair_bspline.c :::::::::::::: void fair_kr_bspline(bspl,knot,l,from,to) /* Fairs a cubic rational B-spline curve by knot removal/reinsertion. Input: bspl: cubic B-spline control polygon (one coord.) knot: knot sequence l: no. of intervals from, to: from where to where to fair Output: same as input, but hopefully fairer. */ float bspl[], knot[]; int l,from,to; { int i, i3, l2; float left,right, middle; float Knot[100]; /*to simulate multiple knots at ends */ Knot[0]=Knot[1]=knot[0]; for(i=0; i<=l; i++)Knot[i+2]=knot[i]; Knot[l+3]=Knot[l+4]=knot[l]; /* With new knot vector, bspl[i] is associated with Knot[i+1] */ l2=l+2; if(from <= 2) from = 2; if(to >=l) to=l; for (i=from; i<=to; i++) { left=((Knot[i+2]-Knot[i-2])*bspl[i-1] -(Knot[i+2]-Knot[i+1] )*bspl[i-2] ) /(Knot[i+1]-Knot[i-2] ); right=((Knot[i+4]-Knot[i])*bspl[i+1] -(Knot[i+1]-Knot[i] )*bspl[i+2] ) /(Knot[i+4]-Knot[i+1] ); bspl[i]=((Knot[i+3]-Knot[i+1])*left +(Knot[i+1]-Knot[i-1])*right ) /(Knot[i+3]-Knot[i-1]) ; } } :::::::::::::: fair_surf.c :::::::::::::: void fair_surf(bspl,lu,lv,knot_u, knot_v) /* Fairs B-spline control net. Input: bspl: B-spline control net (one coordinate only) lu,lv: no. of intervals in u- and v-direction knots_u, knots_v: knot vectors in u- and v-direction Output: as input */ float bspl[20][20],knot_u[],knot_v[]; int lu,lv; { int i,j,lu2,lv2; float b[20]; lu2=lu+2; lv2=lv+2; for(i=0; i<= lu2; i++) { for(j=0; j<=lv2; j++) b[j]=bspl[i][j]; /* grab i-th row*/ fair_bspline(b,knot_v,lv,0,lv); /* fair row */ for(j=0; j<=lv2; j++) bspl[i][j]=b[j]; /* put row back */ } for(j=0; j<= lv2; j++) { for(i=0; i<=lu2; i++) b[i]=bspl[i][j]; /* grab j-th col*/ fair_bspline(b,knot_u,lu,0,lu); /* fair col */ for(i=0; i<=lu2; i++) bspl[i][j]=b[i]; /* put col back */ } } :::::::::::::: gamma_spline.c :::::::::::::: void gamma_spline(bspl,l,gamma,bez) /*From B-spline polygon and gammas, find interior Bezier points b3i+-1. Input: bspl: control polygon (one coordinate only) l: number of cubic pieces gamma: gamma_i's Output: bez: piecewise Bezier polygon, but without the junction points b3i */ int l; float bspl[],gamma[],bez[]; { int i,i3,l3; bez[0]=bspl[0]; bez[1]=bspl[1]; if(l>1) { bez[2]=(gamma[2]*bspl[1] +bspl[2] )/(gamma[2]+1.0); } if(l>2) { bez[4]=( (1.0+gamma[3])*bspl[2] +gamma[2]*bspl[3] )/(1.0+gamma[2]+gamma[3]); } /* Now the main part: */ for(i=2; i2) { bez[l3-4]=( gamma[l]*bspl[l-1] +(1.0+gamma[l-1])*bspl[l] )/(1.0+gamma[l-1]+gamma[l]); } if(l>1) { bez[l3-2]=( bspl[l] + gamma[l]*bspl[l+1] )/(gamma[l]+1.0); } bez[l3-1]= bspl[l+1]; bez[l3] = bspl[l+2]; } :::::::::::::: height.c :::::::::::::: #include #include float height(px,py,ax,ay,bx,by) /* find the height of point (px,py) over straight line thru (ax,ay) and (bx,by). */ float px,py,ax,ay,bx,by; { float det,length; det = px*ay + ax*by + bx*py -ay*bx - by*px - py*ax; length = sqrt( (bx-ax)*(bx-ax) + (by-ay)*(by-ay) ); if(length < 0.000001) /* height doesn't make sense, hence: */ return( sqrt( (px-ax)*(px-ax) + (py-ay)*(py-ay) ) ); else return (det/length); } :::::::::::::: hornbez.c :::::::::::::: float hornbez(degree,coeff,t) /* uses Horner's scheme to compute one coordinate value of a Bezier curve. Has to be called for each coordinate (x,y, and/or z) of a control polygon. Input: degree: degree of curve. coeff: array with coefficients of curve. t: parameter value. Output: coordinate value. */ int degree; float coeff[]; float t; { int i; int n_choose_i; /* shouldn't be too large! */ float fact,t1,aux; t1=1.0 - t; fact=1.0; n_choose_i=1; aux=coeff[0]*t1; /* starting the evaluation loop */ for(i=1; i0; i--) aux= t*aux + coeff[i-1]; return(aux); } :::::::::::::: int.ps :::::::::::::: 90 rotate 200 -350 translate 0.8 setgray 0.1 setlinewidth 1.2 1.2 scale newpath 0.000000 0.000000 moveto 350.000000 0.000000 lineto 350.000000 116.666667 lineto 0.000000 116.666667 lineto 0.000000 0.000000 lineto fill 0.0 setgray 1 setlinewidth newpath 58.333333 29.166667 moveto 58.333333 29.166667 lineto 0.000000 87.500000 lineto 58.333333 116.666667 lineto 116.666667 0.000000 lineto 175.000000 87.500000 lineto 350.000000 58.333333 lineto 291.666667 29.166667 lineto stroke 0.0 setgray 0.000000 87.500000 3.000000 0.000000 360.000000 arc stroke 58.333333 116.666667 3.000000 0.000000 360.000000 arc stroke 116.666667 0.000000 3.000000 0.000000 360.000000 arc stroke 175.000000 87.500000 3.000000 0.000000 360.000000 arc stroke 350.000000 58.333333 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 0.000000 87.500000 2.800000 0.000000 360.000000 arc fill 58.333333 116.666667 2.800000 0.000000 360.000000 arc fill 116.666667 0.000000 2.800000 0.000000 360.000000 arc fill 175.000000 87.500000 2.800000 0.000000 360.000000 arc fill 350.000000 58.333333 2.800000 0.000000 360.000000 arc fill 3 setlinewidth 0 setgray newpath 58.333333 29.166667 moveto 54.227258 33.468918 lineto 50.641308 37.609440 lineto 47.549684 41.566730 lineto 44.927594 45.322904 lineto 42.751277 48.863456 lineto 40.997976 52.177043 lineto 39.645941 55.255235 lineto 38.674415 58.092329 lineto 38.063639 60.685120 lineto 37.794813 63.032707 lineto 37.850103 65.136289 lineto 38.212626 66.998974 lineto 38.866419 68.625604 lineto 39.796430 70.022568 lineto 40.988498 71.197620 lineto 42.429334 72.159730 lineto 44.106487 72.918920 lineto 46.008330 73.486092 lineto 48.124033 73.872894 lineto 50.443522 74.091593 lineto 52.957466 74.154908 lineto 55.657239 74.075905 lineto 58.534884 73.867852 lineto 61.583081 73.544129 lineto 64.795118 73.118086 lineto 68.164833 72.602970 lineto 71.686603 72.011787 lineto 75.355279 71.357260 lineto 79.166163 70.651692 lineto 83.114942 69.906918 lineto 87.197659 69.134224 lineto 91.410665 68.344264 lineto 95.750564 67.547030 lineto 100.214166 66.751757 lineto 104.798425 65.966901 lineto 109.500406 65.200097 lineto 114.317216 64.458091 lineto 119.245942 63.746758 lineto 124.283594 63.071022 lineto 129.427083 62.434896 lineto 134.673087 61.841410 lineto 140.018044 61.292652 lineto 145.458074 60.789741 lineto 150.988895 60.332851 lineto 156.605804 59.921202 lineto 162.303517 59.553099 lineto 168.076207 59.225940 lineto 173.917337 58.936269 lineto 179.819647 58.679775 lineto 185.775057 58.451382 lineto 191.774583 58.245263 lineto 197.808252 58.054907 lineto 203.865049 57.873185 lineto 209.932820 57.692409 lineto 215.998185 57.504411 lineto 222.046415 57.300631 lineto 228.061448 57.072179 lineto 234.025689 56.809951 lineto 239.919960 56.504728 lineto 245.723470 56.147257 lineto 251.413604 55.728387 lineto 256.965911 55.239175 lineto 262.353969 54.671005 lineto 267.549320 54.015735 lineto 272.521396 53.265801 lineto 277.237264 52.414403 lineto 281.661709 51.455607 lineto 285.757041 50.384529 lineto 289.483011 49.197489 lineto 292.796644 47.892173 lineto 295.652211 46.467804 lineto 298.001091 44.925330 lineto 299.791602 43.267596 lineto 300.969005 41.499552 lineto 301.475275 39.628431 lineto 301.248995 37.663972 lineto 300.225357 35.618611 lineto 298.335850 33.507707 lineto 295.508293 31.349766 lineto 291.666667 29.166667 lineto stroke 1 setlinewidth 0 setgray 58.333333 29.166667 3.000000 0.000000 360.000000 arc fill 291.666667 29.166667 3.000000 0.000000 360.000000 arc fill showpage ::::::::::::::::: intersect_lines.c ::::::::::::::::: void intersect_lines(a,b,v,w,p) /* finds the intersection p of the two straight lines a + tv and b+tw. No check for infinite p is made. */ float a[2],b[2],v[2],w[2],p[2]; { float D,t; float diff[2]; diff[0]=a[0]-b[0]; diff[1]=a[1]-b[1]; D= w[1]*v[0] - w[0]*v[1]; t= (diff[1]*w[0] - diff[0]*w[1] )/D; p[0]=a[0]+t*v[0]; p[1]=a[1]+t*v[1]; } :::::::::::::::::: intersect_points.c :::::::::::::::::: void intersect_points(a,b,c,d,p) /* finds the intersection p of the two straight lines [a,b] and [c,d]. No check for infinite p is made. */ float a[2],b[2],c[2],d[2],p[2]; { float diff1[2],diff2[2]; diff1[0]=b[0]-a[0]; diff1[1]=b[1]-a[1]; diff2[0]=d[0]-c[0]; diff2[1]=d[1]-c[1]; intersect_lines(a,d,diff1,diff2,p); } :::::::::::::: intersect.c :::::::::::::: #include #include extern FILE *outfile, *psfile; void intersect(bx,by,w,degree,tol) /* Intersects bezier curve with x-axis by adaptive subdivision. Subdivision is controlled by tolerance tol. There is no check for stack depth! Intersection points are not found in `natural' order. Results are written into file outfile. Input: bx,by,w: rational Bezier curve degree: its degree tol: accuracy for results */ int degree; float tol; float bx[],by[],w[]; { float a[2],b[2],c[2],d[2],p[2]; float bxleft[20],byleft[20],bxright[20], byright[20],wleft[20],wright[20]; float box[4],xx,yy; int j; int check_flat(); /********* does minmaxbox contain x-axis? **********/ minmax(bx,by,degree,box); if (box[2]*box[3] > 0.0) return; /********* is polygon flat enough? ********/ if( check_flat(bx,by,degree,tol)== 1 ) { a[0]=bx[0]; a[1]=by[0]; /* intersect curve */ b[0]=bx[degree]; b[1]=by[degree]; /* endpoints with */ c[0]=0.0; c[1]=0.0; /* x- axis. Intersection */ d[0]=1.0; d[1]=0.0; /* is in p[0], p[1]. */ intersect_points(a,b,c,d,p); fprintf(outfile,"%f %f\n",p[0],p[1]); } /******** if not flat enough, subdivide: ********/ else { subdiv(degree,bx,w,0.5,bxleft,bxright,wleft,wright); subdiv(degree,by,w,0.5,byleft,byright,wleft,wright); /******** ... and repeat for each half: **********/ intersect(bxleft, byleft, wleft, degree,tol); intersect(bxright,byright,wright,degree,tol); } } :::::::::::::: l_u_system.c :::::::::::::: void l_u_system(alpha,beta,gamma,l,up,low) /* perform LU decomposition of tridiagonal system with lower diagonal alpha, diagonal beta, upper diagonal gamma. input: alpha,beta,gamma: the coefficient matrix entries l: matrix size [0,l]x[0,l] low: L-matrix entries up: U-matrix entries */ float alpha[],beta[],gamma[],low[],up[]; int l; { int i; up[0]=beta[0]; for(i=1; i<=l; i++) { low[i]=alpha[i]/up[i-1]; up[i] =beta[i]-low[i]*gamma[i-1]; } } :::::::::::::: length_2.c :::::::::::::: #include float length_2(a) /* computes length of vector a input: a output: length */ float a[]; {float x; x=sqrt(a[0]*a[0]+a[1]*a[1]); return(x); } :::::::::::::: locbspl.ps :::::::::::::: %this is figure {fig:culoco}, fig. 7.17 in the second edition 90 rotate 200 -400 translate 1.3 1.3 scale /blackbox {0 setgray -3.5 -3.5 rlineto 7 0 rlineto 0 7 rlineto -7 0 rlineto 0 -7 rlineto closepath fill} def /whitebox {1 setgray -3 -3 rlineto 6 0 rlineto 0 6 rlineto -6 0 rlineto 0 -6 rlineto closepath fill} def /diamond {0 -5 rlineto 5 5 rlineto -5 5 rlineto -5 -5 rlineto 5 -5 rlineto closepath} def 3 setlinewidth 0.7 setgray newpath 100.000000 34.285713 moveto 90.497017 30.570564 lineto 81.977471 28.450709 lineto 74.424680 27.749909 lineto 67.821940 28.291923 lineto 62.152549 29.900528 lineto 57.399833 32.399536 lineto 53.547088 35.612749 lineto 50.577629 39.363997 lineto 48.474777 43.477122 lineto 47.221875 47.775968 lineto stroke newpath 47.221875 47.775968 moveto 46.802251 52.107738 lineto 47.199488 56.408015 lineto 48.396790 60.635835 lineto 50.377401 64.750245 lineto 53.124611 68.710318 lineto 56.621706 72.475093 lineto 60.852063 76.003665 lineto 65.799061 79.255077 lineto 71.446101 82.188379 lineto 77.776663 84.762573 lineto stroke newpath 77.776663 84.762573 moveto 84.750334 86.943245 lineto 92.230630 88.721893 lineto 100.057530 90.096683 lineto 108.071057 91.065788 lineto 116.111239 91.627357 lineto 124.018105 91.779445 lineto 131.631676 91.520173 lineto 138.791990 90.847588 lineto 145.339028 89.759736 lineto 151.112684 88.254665 lineto stroke newpath 151.112684 88.254665 moveto 155.998294 86.344065 lineto 160.063632 84.094384 lineto 163.422155 81.585666 lineto 166.187318 78.897912 lineto 168.472544 76.111126 lineto 170.391146 73.305293 lineto 172.056500 70.560405 lineto 173.581902 67.956457 lineto 175.080729 65.573447 lineto 176.666307 63.491422 lineto stroke newpath 176.666307 63.491422 moveto 178.426393 61.777115 lineto 180.346489 60.443869 lineto 182.386573 59.491603 lineto 184.506623 58.920265 lineto 186.666648 58.729817 lineto 188.826688 58.920256 lineto 190.946754 59.491603 lineto 192.986822 60.443878 lineto 194.906918 61.777128 lineto 196.667004 63.491426 lineto stroke newpath 196.667004 63.491426 moveto 198.271720 65.569274 lineto 199.904712 67.923351 lineto 201.794386 70.448885 lineto 204.169019 73.041098 lineto 207.257032 75.595247 lineto 211.286736 78.006563 lineto 216.486581 80.170259 lineto 223.085070 81.981577 lineto 231.310590 83.335677 lineto 241.391786 84.127735 lineto stroke newpath 241.391786 84.127735 moveto 253.443321 84.271985 lineto 267.139689 83.759135 lineto 282.042631 82.598704 lineto 297.713947 80.800247 lineto 313.715299 78.373228 lineto 329.608599 75.327192 lineto 344.955349 71.671636 lineto 359.317366 67.416059 lineto 372.256120 62.569950 lineto 383.333333 57.142844 lineto stroke 0 setgray 1 setlinewidth 100.000000 34.285713 3.000000 0.000000 360.000000 arc fill 47.221875 47.775968 3.000000 0.000000 360.000000 arc fill 77.776663 84.762573 3.000000 0.000000 360.000000 arc fill 151.112684 88.254665 3.000000 0.000000 360.000000 arc fill 176.666307 63.491422 3.000000 0.000000 360.000000 arc fill 196.667004 63.491426 3.000000 0.000000 360.000000 arc fill 241.391786 84.127735 3.000000 0.000000 360.000000 arc fill 383.333333 57.142857 3.000000 0.000000 360.000000 arc fill 0.0 setgray 2 setlinewidth newpath 100.000000 34.285713 moveto 66.666667 19.047619 lineto 33.333333 47.619048 lineto 66.666667 91.428575 lineto 166.666667 95.238095 lineto 173.333327 57.142857 lineto 200.000000 57.142857 lineto 206.666660 95.238095 lineto 350.000000 76.190476 lineto 383.333333 57.142857 lineto stroke 100.000000 34.285713 moveto blackbox 66.666667 19.047619 moveto blackbox 66.666667 19.047619 moveto whitebox 33.333333 47.619048 moveto blackbox 33.333333 47.619048 moveto whitebox 66.666667 91.428575 moveto blackbox 66.666667 91.428575 moveto whitebox 166.666667 95.238095 moveto blackbox 166.666667 95.238095 moveto whitebox 173.333327 57.142857 moveto blackbox 173.333327 57.142857 moveto whitebox 200.000000 57.142857 moveto blackbox 200.000000 57.142857 moveto whitebox 206.666660 95.238095 moveto blackbox 206.666660 95.238095 moveto whitebox 350.000000 76.190476 moveto blackbox 350.000000 76.190476 moveto whitebox 383.333333 57.142857 moveto blackbox 1 setlinewidth 0 setgray newpath 100.000000 34.285713 moveto 90.497017 30.570564 lineto 81.977471 28.450709 lineto 74.424680 27.749909 lineto 67.821940 28.291923 lineto 62.152549 29.900528 lineto 57.399833 32.399536 lineto 53.547088 35.612749 lineto 50.577629 39.363997 lineto 48.474777 43.477122 lineto 47.221875 47.775968 lineto stroke newpath 47.221875 47.775968 moveto 46.802251 52.107738 lineto 47.199488 56.408015 lineto 48.396790 60.635835 lineto 50.377401 64.750245 lineto 53.124611 68.710318 lineto 56.621706 72.475093 lineto 60.852063 76.003665 lineto 65.799061 79.255077 lineto 71.446101 82.188379 lineto 77.776663 84.762573 lineto stroke newpath 77.776663 84.762573 moveto 84.743659 86.940057 lineto 92.177296 88.696489 lineto 99.877572 90.010997 lineto 107.644478 90.862674 lineto 115.278077 91.230610 lineto 122.578406 91.093872 lineto 129.345457 90.431495 lineto 135.379251 89.222481 lineto 140.479708 87.445795 lineto 144.446659 85.080383 lineto stroke newpath 144.446659 85.080383 moveto 147.152154 82.131640 lineto 148.757315 78.710447 lineto 149.495681 74.954015 lineto 149.600697 70.999513 lineto 149.305693 66.984059 lineto 148.844083 63.044784 lineto 148.449135 59.318801 lineto 148.354292 55.943294 lineto 148.792871 53.055409 lineto 149.998347 50.792381 lineto stroke newpath 149.998347 50.792381 moveto 152.138535 49.259086 lineto 155.118863 48.430711 lineto 158.779224 48.250008 lineto 162.959528 48.659747 lineto 167.499812 49.602749 lineto 172.240067 51.021862 lineto 177.020311 52.859960 lineto 181.680552 55.059937 lineto 186.060778 57.564681 lineto 190.001011 60.317144 lineto stroke newpath 190.001011 60.317144 moveto 193.412383 63.255301 lineto 196.491941 66.298217 lineto 199.508111 69.360184 lineto 202.729289 72.355511 lineto 206.423855 75.198496 lineto 210.860141 77.803421 lineto 216.306623 80.084565 lineto 223.031727 81.956182 lineto 231.303946 83.332516 lineto 241.391786 84.127735 lineto stroke newpath 241.391786 84.127735 moveto 253.443321 84.271985 lineto 267.139689 83.759135 lineto 282.042631 82.598704 lineto 297.713947 80.800247 lineto 313.715299 78.373228 lineto 329.608599 75.327192 lineto 344.955349 71.671636 lineto 359.317366 67.416059 lineto 372.256120 62.569950 lineto 383.333333 57.142844 lineto stroke 1 setlinewidth 100.000000 34.285713 3.000000 0.000000 360.000000 arc fill 47.221875 47.775968 3.000000 0.000000 360.000000 arc fill 77.776663 84.762573 3.000000 0.000000 360.000000 arc fill 144.446659 85.080383 3.000000 0.000000 360.000000 arc fill 149.998347 50.792381 3.000000 0.000000 360.000000 arc fill 190.001011 60.317144 3.000000 0.000000 360.000000 arc fill 241.391786 84.127735 3.000000 0.000000 360.000000 arc fill 383.333333 57.142857 3.000000 0.000000 360.000000 arc fill 0.0 setgray 2 setlinewidth newpath 100.000000 34.285713 moveto 66.666667 19.047619 lineto 33.333333 47.619048 lineto 66.666667 91.428575 lineto 166.666667 95.238095 lineto 133.333333 38.095238 lineto 200.000000 57.142857 lineto 206.666660 95.238095 lineto 350.000000 76.190476 lineto 383.333333 57.142857 lineto stroke 100.000000 34.285713 moveto blackbox 66.666667 19.047619 moveto blackbox 66.666667 19.047619 moveto whitebox 33.333333 47.619048 moveto blackbox 33.333333 47.619048 moveto whitebox 66.666667 91.428575 moveto blackbox 66.666667 91.428575 moveto whitebox 166.666667 95.238095 moveto blackbox 166.666667 95.238095 moveto whitebox 133.333333 38.095238 moveto blackbox 133.333333 38.095238 moveto whitebox 200.000000 57.142857 moveto blackbox 200.000000 57.142857 moveto whitebox 206.666660 95.238095 moveto blackbox 206.666660 95.238095 moveto whitebox 350.000000 76.190476 moveto blackbox 350.000000 76.190476 moveto whitebox 383.333333 57.142857 moveto blackbox showpage :::::::::::::: minmax.c :::::::::::::: float minmax(bx,by,degree,value) /* find minmax box of 2D polygon bx,by */ int degree; float bx[],by[],value[]; { int i; float xmin,xmax,ymin,ymax; xmin= bx[0]; ymin = by[0]; xmax= bx[0]; ymax = by[0] ; for (i=0; i<=degree; i++) { if (bx[i]xmax)xmax=bx[i]; if (by[i]ymax)ymax=by[i]; } value[0]=xmin; value[1]=xmax; value[2]=ymin; value[3]=ymax; } :::::::::::::: minmax.ps :::::::::::::: 90 rotate 200 -350 translate 0.8 setgray 0.1 setlinewidth 1.2 1.2 scale newpath 0.000000 0.000000 moveto 350.000000 0.000000 lineto 350.000000 116.666667 lineto 0.000000 116.666667 lineto 0.000000 0.000000 lineto fill 0.0 setgray 1 setlinewidth newpath 58.333333 29.166667 moveto 58.333333 29.166667 lineto 0.000000 87.500000 lineto 58.333333 116.666667 lineto 116.666667 0.000000 lineto 175.000000 87.500000 lineto 350.000000 58.333333 lineto 291.666667 29.166667 lineto stroke 0.0 setgray 0.000000 87.500000 3.000000 0.000000 360.000000 arc stroke 58.333333 116.666667 3.000000 0.000000 360.000000 arc stroke 116.666667 0.000000 3.000000 0.000000 360.000000 arc stroke 175.000000 87.500000 3.000000 0.000000 360.000000 arc stroke 350.000000 58.333333 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 0.000000 87.500000 2.800000 0.000000 360.000000 arc fill 58.333333 116.666667 2.800000 0.000000 360.000000 arc fill 116.666667 0.000000 2.800000 0.000000 360.000000 arc fill 175.000000 87.500000 2.800000 0.000000 360.000000 arc fill 350.000000 58.333333 2.800000 0.000000 360.000000 arc fill 3 setlinewidth 0 setgray newpath 58.333333 29.166667 moveto 54.227258 33.468918 lineto 50.641308 37.609440 lineto 47.549684 41.566730 lineto 44.927594 45.322904 lineto 42.751277 48.863456 lineto 40.997976 52.177043 lineto 39.645941 55.255235 lineto 38.674415 58.092329 lineto 38.063639 60.685120 lineto 37.794813 63.032707 lineto 37.850103 65.136289 lineto 38.212626 66.998974 lineto 38.866419 68.625604 lineto 39.796430 70.022568 lineto 40.988498 71.197620 lineto 42.429334 72.159730 lineto 44.106487 72.918920 lineto 46.008330 73.486092 lineto 48.124033 73.872894 lineto 50.443522 74.091593 lineto 52.957466 74.154908 lineto 55.657239 74.075905 lineto 58.534884 73.867852 lineto 61.583081 73.544129 lineto 64.795118 73.118086 lineto 68.164833 72.602970 lineto 71.686603 72.011787 lineto 75.355279 71.357260 lineto 79.166163 70.651692 lineto 83.114942 69.906918 lineto 87.197659 69.134224 lineto 91.410665 68.344264 lineto 95.750564 67.547030 lineto 100.214166 66.751757 lineto 104.798425 65.966901 lineto 109.500406 65.200097 lineto 114.317216 64.458091 lineto 119.245942 63.746758 lineto 124.283594 63.071022 lineto 129.427083 62.434896 lineto 134.673087 61.841410 lineto 140.018044 61.292652 lineto 145.458074 60.789741 lineto 150.988895 60.332851 lineto 156.605804 59.921202 lineto 162.303517 59.553099 lineto 168.076207 59.225940 lineto 173.917337 58.936269 lineto 179.819647 58.679775 lineto 185.775057 58.451382 lineto 191.774583 58.245263 lineto 197.808252 58.054907 lineto 203.865049 57.873185 lineto 209.932820 57.692409 lineto 215.998185 57.504411 lineto 222.046415 57.300631 lineto 228.061448 57.072179 lineto 234.025689 56.809951 lineto 239.919960 56.504728 lineto 245.723470 56.147257 lineto 251.413604 55.728387 lineto 256.965911 55.239175 lineto 262.353969 54.671005 lineto 267.549320 54.015735 lineto 272.521396 53.265801 lineto 277.237264 52.414403 lineto 281.661709 51.455607 lineto 285.757041 50.384529 lineto 289.483011 49.197489 lineto 292.796644 47.892173 lineto 295.652211 46.467804 lineto 298.001091 44.925330 lineto 299.791602 43.267596 lineto 300.969005 41.499552 lineto 301.475275 39.628431 lineto 301.248995 37.663972 lineto 300.225357 35.618611 lineto 298.335850 33.507707 lineto 295.508293 31.349766 lineto 291.666667 29.166667 lineto stroke 1 setlinewidth 0 setgray 58.333333 29.166667 3.000000 0.000000 360.000000 arc fill 291.666667 29.166667 3.000000 0.000000 360.000000 arc fill showpage :::::::::::::: minmax_surf.c :::::::::::::: minmax_surf(bx,by,degree_u,degree_v,value) /* find minmax box of 2D polygon bx,by */ int degree_u,degree_v; float bx[20][20],by[20][20],value[]; { int i,j; float xmin,xmax,ymin,ymax; xmin= bx[0][0]; ymin = by[0][0]; xmax= bx[0][0]; ymax = by[0][0] ; for (i=0; i<=degree_u; i++) for (j=0; j<=degree_v; j++) { if (bx[i][j]xmax)xmax=bx[i][j]; if (by[i][j]ymax)ymax=by[i][j]; } value[0]=xmin; value[1]=xmax; value[2]=ymin; value[3]=ymax; } :::::::::::::: netcoons.c :::::::::::::: void netcoons(net,rows,columns) /* Uses bilinear Coons blending to complete a control net of which only the four boundary polygons are given. Works for one coordinate only. Input: net: control net - only boundaries are considered as input. rows, columns: dimensions of net. Output: net: the completed net, with the old boundaries. */ float net[20][20]; int rows, columns; /*If either of these is >20, adjust dimensions*/ /*in previous statement! */ { int i,j; float u,v,u1,v1; for(i=0; i<=rows; i++) for(j=0; j<=columns; j++) { u=((float)i)/rows; u1=1.0-u; v=((float)j)/columns; v1=1.0-v; net[i][j]=u1*net[0][j] + u*net[rows][j] +v1*net[i][0] + v*net[i][columns] -u1*v1*net[0][0] - u1*v*net[0][columns] -u *v1*net[rows][0] - u *v*net[rows][columns]; } } :::::::::::::: nurb_circ.dat :::::::::::::: -1 0 -1 0.5 0 2 1 0.5 1 0 1 0.66666 0.33333 0.66666 1 0 1 2 % a semicircle, written as a C^2 NURB with %two cubic segments over the uniform knot sequence %0,1,2. First: the 5 control points. Next: their weights. :::::::::::::: parameters.c :::::::::::::: #include void parameters(data_x,data_y,l,knot) /* Finds a centripetal parametrization for a given set of 2D data points. Input: data_x, data_y: input points, numbered from 0 to l+2. l: number of intervals. Output: knot: knot sequence. Note: not (knot[l]=1.0)! Note: data_x[1], data_x[l+1] are not used! Same for data_y. */ float data_x[], data_y[],knot[]; int l; { int i, l1,l2; /* In the following, special care must be */ float delta; /* at the ends because of the data structure */ /* used. See note above. */ l1= l-1; l2 = l+2; knot[0] = 0.0; /* initialize -- arbitrary */ delta=sqrt((data_x[2]-data_x[0])*(data_x[2]-data_x[0]) +(data_y[2]-data_y[0])*(data_y[2]-data_y[0])); knot[1]= sqrt(delta); /* leave out this sqrt if you want chord length.*/ for(i=2; i #include main() /* program to plot curvature of a rational B-spline curve, expressed in piecewise rational cubic form. All curvatures are expected in the input file b_kappas.dat. */ { FILE *file, *plotfile; int i,j,degree,degree1,degree2,istep,tol,buttno,howmany,dense; float t,shoulder,width,xmin1,ymin1,xmax1,ymax1,x,y,xx,yy, kappa_min, kappa_max, scale_x,scale_y, setline; float coeffx[1000],value[4]; float coeffy[1000]; float abs(); char min[20],max[20]; file = fopen("b_kappas.dat","r"); plotfile= fopen("psplot.ps","w"); fscanf(file,"%d", &howmany); fscanf(file,"%d", &dense); for(i=0; i <= howmany ; i++) { fscanf(file,"%f",&coeffx[i]); fscanf(file,"%f",&coeffy[i]); } minmax(coeffx,coeffy,howmany,value); sprintf(min,"%4.2f",value[2]); sprintf(max,"%4.2f",value[3]); kappa_max=value[3]; kappa_min=value[2]; width=value[3]-value[2]; /*to scale kappa printouts */ minmax(coeffx,coeffy,howmany,value); /* Setting the window: */ if (value[2] > 0.0) value[2]=0.0; /* make sure kappa=0 is */ if (value[3] < 0.0) value[3]=0.0; /* drawn. Give some room */ width=(value[3]-value[2])/20.0; /* in y-direction. */ value[2]=value[2]-width; value[3]=value[3]+width; degree1 = degree+1; /*********************creating a postscript file for the curvatures: *******************/ /* rotate, so paper is used sideways */ fprintf(plotfile,"90 rotate\n"); fprintf(plotfile,"70 -602 translate\n"); fprintf(plotfile,"10 300 translate\n"); scale_x=450.0/(value[1]-value[0]); scale_y=300.0/(value[3]-value[2]); fprintf(plotfile,"0.6 setgray \n"); fprintf(plotfile,"%f setlinewidth\n",0.1); fprintf(plotfile,"%f %f translate\n", -1.0*scale_x*value[0], -1.0*scale_y*value[2]); fprintf(plotfile,"newpath \n"); fprintf(plotfile," %f %f moveto\n", 0.0,0.0); fprintf(plotfile," %3.2f %3.2f lineto\n", scale_x*value[1],0.0); fprintf(plotfile,"stroke\n"); fprintf(plotfile,"newpath \n"); fprintf(plotfile," %f %f moveto\n", scale_x*value[1],0.0); fprintf(plotfile," %f %f lineto\n", scale_x*value[0],0.0); fprintf(plotfile," %f %f lineto\n", scale_x*coeffx[0],scale_y*coeffy[0]); for(j=1; j<= howmany; j++) { fprintf(plotfile," %f %f lineto\n", scale_x*coeffx[j], scale_y*coeffy[j]); } fprintf(plotfile," %f %f lineto\n", scale_x*coeffx[howmany],scale_y*coeffy[howmany]); fprintf(plotfile,"fill\n"); /******* plot box : *************/ fprintf(plotfile,"0.0 setgray\n"); fprintf(plotfile,"0.3 setlinewidth\n"); fprintf(plotfile,"newpath\n"); fprintf(plotfile,"%f %f moveto\n", scale_x*value[0],scale_y*value[2]); fprintf(plotfile,"%f %f lineto\n", scale_x*value[0],scale_y*value[3]); fprintf(plotfile,"%f %f lineto\n", scale_x*value[1],scale_y*value[3]); fprintf(plotfile,"%f %f lineto\n", scale_x*value[1],scale_y*value[2]); fprintf(plotfile,"%f %f lineto\n", scale_x*value[0],scale_y*value[2]); fprintf(plotfile,"stroke\n"); /***** plot markers: ************/ fprintf(plotfile,"0.0 setgray\n "); if(howmany > dense) for(j=0; j<= howmany; j=j+dense) { if(j >= 0) /*to keep numbering right */ /* but to skip first point */ fprintf(plotfile,"%f %f %f %f %f arc stroke\n", scale_x*coeffx[j], scale_y*coeffy[j], 3.0, 0.0, 360.0); } fprintf(plotfile,"1.0 setgray\n "); if(howmany > dense) for(j=0; j<= howmany; j=j+dense) { if(j >= 0) /* see above */ fprintf(plotfile,"%f %f %f %f %f arc fill\n", scale_x*coeffx[j], scale_y*coeffy[j], 2.6, 0.0, 360.0); } /***** print min-max values: *************/ fprintf(plotfile,"0.0 setgray\n "); fprintf(plotfile,"/Times-Roman findfont 15 scalefont setfont\n"); fprintf(plotfile,"%f %f moveto\n", scale_x*value[1]+10, scale_y*kappa_max); fprintf(plotfile,"(max: %3.3f)show\n",kappa_max); fprintf(plotfile,"%f %f moveto\n", scale_x*value[1]+10, scale_y*kappa_min); fprintf(plotfile,"(min: %3.3f)show\n",kappa_min); fprintf(plotfile,"showpage"); /*********************************************************************/ fclose(file); fclose(plotfile); } :::::::::::::: plot_ratsurf.c :::::::::::::: extern FILE *psfile; /* for postscript output */ void plot_ratsurf(bx,by,bw,degree_u,degree_v,u_points,v_points,scale_x,scale_y) /* plots v_points isoparametric curves of the rat Bez surface, each with u_points points on it. Input: bx, by: arrays with x- and y- coordinates of control net. degree_u,degree_v: degrees in u- and v- direction u_points,v_points: plot resolution scale_x,scale_y: scale factor for postscript. Output: postscript file */ int degree_u,degree_v,u_points,v_points; float bx[20][20], by[20][20],bw[20][20],scale_x,scale_y; { int i,j,u_points1; float u,v,del_u,del_v; float aux_x[5],aux_y[5],aux_w[5], arrax[5],array[5],arraw[5]; float points_x[300], points_y[300]; int iv; float ratbez(),decas(),hornbez(); del_v= 1.0/((float)v_points); u_points1=u_points+1; v=0.0; for(iv=0; iv<= v_points; iv++)/* loop over all curves to be drawn*/ { for(i=0;i<=degree_u; i++)/* create aux. arrays*/ { for(j=0; j<= degree_v; j++) { arraw[j]=bw[i][j]; arrax[j]=bx[i][j]*arraw[j]; array[j]=by[i][j]*arraw[j]; } aux_w[i]=hornbez(degree_v,arraw,v); aux_x[i]=hornbez(degree_v,arrax,v)/aux_w[i]; aux_y[i]=hornbez(degree_v,array,v)/aux_w[i]; } ratbez_to_points(degree_u,u_points,aux_x,aux_w,points_x); ratbez_to_points(degree_u,u_points,aux_y,aux_w,points_y); /******************* now ps: *******************************/ fprintf(psfile,"newpath\n"); fprintf(psfile,"%f %f moveto\n", scale_x*points_x[0], scale_y*points_y[0]); for(j=1; j<= u_points; j++) fprintf(psfile,"%f %f lineto\n",scale_x*points_x[j], scale_y*points_y[j]); fprintf(psfile,"stroke\n"); v = v+del_v; } } :::::::::::::: psplot_curve.c :::::::::::::: #include #include extern FILE *psfile; void psplot_curve(bez_x,bez_y,bez_w,bspl_x,bspl_y,l,degree,value,pol,dense,scale_x,scale_y) /* plots piecewise rational cubic Bezier curve, dense points each segment, into the postscript-file psfile. B-spline polygon can also be plotted. Input: bez_x, bez_y, bez_w: piecewise control polygons and weights bspl_x,bspl_y:B-spline controll polygon l: number of curve pieces degree: degree of each piece value: minmax-box of polygon. xmin,xmax,... pol: which polygon to plot: 0: nothing, 1: Bezier, 2: B-spline, dense: how many points per segment */ float bez_x[],bez_y[],bez_w[],value[],bspl_x[],bspl_y[],scale_x, scale_y; int l,degree,pol,dense; { int i,k,j, ldeg,l2,l31,i3; float weight[5]; float points_x[70],points_y[70], q_x[60], q_y[60]; float aux_x[5], aux_y[5],aux_w[5]; l2 = l+2; /* macro to mark B-spline vertex:*/ fprintf(psfile,"/blackbox\n"); fprintf(psfile,"{0 setgray\n"); fprintf(psfile,"-3.5 -3.5 rlineto\n"); fprintf(psfile,"7 0 rlineto\n"); fprintf(psfile,"0 7 rlineto\n"); fprintf(psfile,"-7 0 rlineto\n"); fprintf(psfile,"0 -7 rlineto\n"); fprintf(psfile,"closepath fill} def\n"); fprintf(psfile,"/whitebox\n"); fprintf(psfile,"{1 setgray\n"); fprintf(psfile,"-3 -3 rlineto\n"); fprintf(psfile,"6 0 rlineto\n"); fprintf(psfile,"0 6 rlineto\n"); fprintf(psfile,"-6 0 rlineto\n"); fprintf(psfile,"0 -6 rlineto\n"); fprintf(psfile,"closepath fill} def\n"); /* macro to mark weight point:*/ fprintf(psfile,"/diamond\n"); fprintf(psfile,"{0 -5 rlineto\n"); fprintf(psfile,"5 5 rlineto\n"); fprintf(psfile,"-5 5 rlineto\n"); fprintf(psfile,"-5 -5 rlineto\n"); fprintf(psfile,"5 -5 rlineto\n"); fprintf(psfile,"closepath} def\n"); /* plot curve */ fprintf(psfile,"3 setlinewidth \n"); /* for each segment, convert to points and plot: */ ldeg=degree*l; for(i=0; i< ldeg; i+=degree) { for(k=0; k<=degree; k++) { aux_x[k]=bez_x[i+k]; aux_y[k]=bez_y[i+k]; aux_w[k]=bez_w[i+k]; } ratbez_to_points(degree,dense,aux_x,aux_w,points_x); ratbez_to_points(degree,dense,aux_y,aux_w,points_y); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(points_x[0]-value[0]), scale_y*(points_y[0]-value[2])); for( j=1; j<=dense ; j++) { fprintf(psfile,"%f %f lineto\n", scale_x*(points_x[j]-value[0]), scale_y*(points_y[j]-value[2])); } fprintf(psfile,"stroke \n"); } /**** fill in junction points black: **********/ fprintf(psfile,"1 setlinewidth \n"); for(j=0; j<= ldeg; j=j+degree) { fprintf(psfile,"%f %f %f %f %f arc fill\n", scale_x*(bez_x[j]-value[0]), scale_y*(bez_y[j]-value[2]), 3.0, 0.0, 360.0); } if (pol == 0) { fprintf(psfile,"showpage \n"); return; } if (pol>0) /* plot B-spline polygon: */ { fprintf(psfile,"0.0 setgray\n "); fprintf(psfile,"2 setlinewidth\n "); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(bez_x[0]-value[0]), scale_y*(bez_y[0]-value[2])); for(j=1; j<= l2; j++) { fprintf(psfile,"%f %f lineto\n", scale_x*(bspl_x[j]-value[0]), scale_y*(bspl_y[j]-value[2])); } fprintf(psfile,"stroke \n"); /***** plot control vertices: ************/ for(j=0; j<=l2; j++) { fprintf(psfile,"%f %f moveto\n", scale_x*bspl_x[j], scale_y*bspl_y[j]); fprintf(psfile,"blackbox \n"); if (j!=0 && j!=l2) { fprintf(psfile,"%f %f moveto\n", scale_x*(bspl_x[j]-value[0]), scale_y*(bspl_y[j]-value[2])); fprintf(psfile,"whitebox \n"); } } } /***** plot bezier control polygon if pol=1: ************/ if (pol == 1) { fprintf(psfile,"0.0 setgray\n "); fprintf(psfile,"0.5 setlinewidth\n "); fprintf(psfile,"newpath \n"); fprintf(psfile,"%f %f moveto\n", scale_x*(bez_x[0]-value[0]), scale_y*(bez_y[0]-value[2])); for(j=0; j<= ldeg; j++) { fprintf(psfile,"%f %f lineto\n", scale_x*(bez_x[j]-value[0]), scale_y*(bez_y[j]-value[2])); } fprintf(psfile,"stroke \n"); /***** plot control vertices: ************/ fprintf(psfile,"0.0 setgray\n "); for(j=1; j< ldeg ; j++) { if(j !=(j/degree)*degree) fprintf(psfile,"%f %f %f %f %f arc stroke\n", scale_x*(bez_x[j]-value[0]), scale_y*(bez_y[j]-value[2]), 3.0, 0.0, 360.0); } fprintf(psfile,"1.0 setgray\n "); for(j=1; j< ldeg; j++) { if( j!=(j/degree)*degree) fprintf(psfile,"%f %f %f %f %f arc fill\n", scale_x*(bez_x[j]-value[0]), scale_y*(bez_y[j]-value[2]), 2.80, 0.0, 360.0); } /* fprintf(psfile,"showpage\n"); return; */ /***** plot weight points: ************ fprintf(psfile,"0.3 setgray\n "); l31 = 3*l -1; for (j=0; j<= l31; j++) { q_x[j]=(bez_w[j]*bez_x[j] + bez_w[j+1]*bez_x[j+1]) /(bez_w[j] + bez_w[j+1]); q_y[j]=(bez_w[j]*bez_y[j] + bez_w[j+1]*bez_y[j+1]) /(bez_w[j] + bez_w[j+1]); } for(j=0; j<=l31; j++) { fprintf(psfile,"%f %f moveto\n", scale_x*(q_x[j]-value[0]), scale_y*(q_y[j]-value[2])); fprintf(psfile,"diamond fill\n"); } ************************** weight points plotted */ } fprintf(psfile,"showpage\n"); return; } :::::::::::::: psplot_net.c :::::::::::::: #include #include extern FILE *psfile; void psplot_net(lu,lv,bx,by,step_u,step_v,scale_x,scale_y,value) /* plots control net into postscript-file. Input: lu,lv: dimensions of net bx,by: net vertices step_u,step_v: subnet sizes (e.g. both=3 for pw bicubic net) scale_x,scale_y:scale factors for ps value: window size in world coords */ int lu,lv,step_u,step_v; float bx[20][20], by[20][20],value[4],scale_x,scale_y; { int lv1; int i,j; fprintf(psfile,"0.0 setgray \n"); fprintf(psfile,"1 setlinewidth\n"); lv1= lv+1; for(i=0; i<= lu; i++) { fprintf(psfile,"newpath\n"); fprintf(psfile," %f %f moveto\n", scale_x*(bx[i][0]-value[0]), scale_y*(by[i][0]-value[2])); for(j=1; j<= lv; j++) fprintf(psfile,"%f %f lineto\n", scale_x*(bx[i][j]-value[0]), scale_y*(by[i][j]-value[2])); fprintf(psfile,"stroke\n"); } for(j=0;j<= lv;j++) { fprintf(psfile,"newpath\n"); fprintf(psfile," %f %f moveto\n", scale_x*(bx[0][j]-value[0]), scale_y*(by[0][j]-value[2])); for(i=1; i<= lu; i++) fprintf(psfile," %f %f lineto\n", scale_x*(bx[i][j]-value[0]), scale_y*(by[i][j]-value[2])); fprintf(psfile,"stroke\n"); } /***** now mark control points *****/ for(i=0; i<= lu; i++) { for(j=0; j<= lv; j++) fprintf(psfile,"%f %f %f %f %f arc stroke\n", scale_x*(bx[i][j]-value[0]), scale_y*(by[i][j]-value[2]), 3.0, 0.0, 360.0); } fprintf(psfile,"1 setgray\n"); /* to white out circles */ for(i=0; i<= lu; i++) { for(j=0; j<= lv; j++) fprintf(psfile,"%f %f %f %f %f arc fill\n", scale_x*(bx[i][j]-value[0]), scale_y*(by[i][j]-value[2]), 2.9, 0.0, 360.0); } /* subnet corners in black: */ fprintf(psfile,"0.0 setgray\n"); for(i=0; i<= lu; i+= step_u) { for(j=0; j<= lv; j+= step_v) fprintf(psfile,"%f %f %f %f %f arc fill\n", scale_x*(bx[i][j]-value[0]), scale_y*(by[i][j]-value[2]), 2.9, 0.0, 360.0); } } :::::::::::::: psr.ps :::::::::::::: % this is referred to as {fig:psr} in chapter {chap:ppint} 3 setlinewidth 90 rotate 0 setgray 200 -450 translate newpath 18.260871 0.000000 moveto 18.260871 2.129984 lineto 18.260871 4.257262 lineto 18.260871 6.379130 lineto 18.260871 8.492882 lineto 18.260871 10.595814 lineto 18.260871 12.685217 lineto 18.260871 14.758389 lineto 18.260871 16.812624 lineto 18.260871 18.845217 lineto 18.260871 20.853462 lineto 18.260871 22.834653 lineto 18.260871 24.786087 lineto 18.260871 26.705056 lineto 18.260871 28.588857 lineto 18.260871 30.434783 lineto 18.260871 30.434783 lineto 20.995941 30.496101 lineto 23.706668 30.681868 lineto 26.368697 30.994785 lineto 28.957683 31.437552 lineto 31.449275 32.012883 lineto 33.819131 32.723477 lineto 36.042900 33.572045 lineto 38.096232 34.561288 lineto 39.954782 35.693911 lineto 41.594205 36.972627 lineto 42.990148 38.400129 lineto 44.118262 39.979129 lineto 44.954203 41.712338 lineto 45.473625 43.602448 lineto 45.652175 45.652174 lineto 45.652175 45.652174 lineto 45.652175 61.058938 lineto 45.652175 76.790345 lineto 45.652175 92.765213 lineto 45.652175 108.902424 lineto 45.652175 125.120775 lineto 45.652175 141.339132 lineto 45.652175 157.476336 lineto 45.652175 173.451204 lineto 45.652175 189.182611 lineto 45.652175 204.589361 lineto 45.652175 219.590328 lineto 45.652175 234.104345 lineto 45.652175 248.050229 lineto 45.652175 261.346871 lineto 45.652175 273.913043 lineto 45.652175 273.913043 lineto 45.547570 277.482261 lineto 45.221127 280.878316 lineto 44.653916 284.090440 lineto 43.826990 287.107750 lineto 42.721418 289.919505 lineto 41.318261 292.514793 lineto 39.598585 294.882816 lineto 37.543446 297.012835 lineto 35.133914 298.893908 lineto 32.351049 300.515295 lineto 29.175911 301.866171 lineto 25.589564 302.935650 lineto 21.573077 303.712965 lineto 17.107504 304.187319 lineto 12.173914 304.347826 lineto 12.173914 304.347826 lineto 12.173914 306.477816 lineto 12.173914 308.605078 lineto 12.173914 310.726941 lineto 12.173914 312.840706 lineto 12.173914 314.943645 lineto 12.173914 317.033030 lineto 12.173914 319.106218 lineto 12.173914 321.160453 lineto 12.173914 323.193036 lineto 12.173914 325.201267 lineto 12.173914 327.182475 lineto 12.173914 329.133904 lineto 12.173914 331.052884 lineto 12.173914 332.936656 lineto 12.173914 334.782609 lineto 12.173914 334.782609 lineto 16.668793 334.782609 lineto 21.593817 334.782609 lineto 26.892175 334.782609 lineto 32.507054 334.782609 lineto 38.381645 334.782609 lineto 44.459134 334.782609 lineto 50.682704 334.782609 lineto 56.995556 334.782609 lineto 63.340875 334.782609 lineto 69.661839 334.782609 lineto 75.901650 334.782609 lineto 82.003483 334.782609 lineto 87.910538 334.782609 lineto 93.565991 334.782609 lineto 98.913047 334.782609 lineto 98.913047 334.782609 lineto 98.913047 332.632766 lineto 98.913047 330.447773 lineto 98.913047 328.233031 lineto 98.913047 325.993965 lineto 98.913047 323.735917 lineto 98.913047 321.464344 lineto 98.913047 319.184643 lineto 98.913047 316.902302 lineto 98.913047 314.622601 lineto 98.913047 312.351028 lineto 98.913047 310.092980 lineto 98.913047 307.853914 lineto 98.913047 305.639172 lineto 98.913047 303.454179 lineto 98.913047 301.304336 lineto 98.913047 301.304336 lineto 103.647344 307.757407 lineto 108.138174 313.728925 lineto 112.426098 319.224349 lineto 116.551693 324.248990 lineto 120.555566 328.808362 lineto 124.478270 332.907834 lineto 128.360404 336.552777 lineto 132.242524 339.748648 lineto 136.165221 342.500873 lineto 140.169086 344.814823 lineto 144.294696 346.695896 lineto 148.582613 348.149548 lineto 153.073442 349.181179 lineto 157.807733 349.796216 lineto 162.826090 350.000000 lineto 162.826090 350.000000 lineto 166.453458 349.697909 lineto 170.013199 348.800634 lineto 173.478261 347.321759 lineto 176.821578 345.274722 lineto 180.016113 342.673107 lineto 183.034787 339.530439 lineto 185.850562 335.860215 lineto 188.436403 331.675990 lineto 190.765213 326.991318 lineto 192.809986 321.819637 lineto 194.543642 316.174561 lineto 195.939143 310.069557 lineto 196.969425 303.518208 lineto 197.607420 296.533954 lineto 197.826094 289.130435 lineto 197.826094 289.130435 lineto 197.627709 280.401292 lineto 197.050578 272.456692 lineto 196.121753 265.269553 lineto 194.868285 258.812884 lineto 193.317239 253.059574 lineto 191.495668 247.982601 lineto 189.430606 243.554916 lineto 187.149106 239.749436 lineto 184.678262 236.539140 lineto 182.045082 233.896933 lineto 179.276647 231.795809 lineto 176.400006 230.208700 lineto 173.442198 229.108526 lineto 170.430272 228.468267 lineto 167.391310 228.260870 lineto 167.391310 228.260870 lineto 164.409150 228.562975 lineto 161.551433 229.460221 lineto 158.820875 230.939139 lineto 156.220159 232.986148 lineto 153.752015 235.587763 lineto 151.419141 238.730431 lineto 149.224222 242.400640 lineto 147.169987 246.584880 lineto 145.259134 251.269552 lineto 143.494379 256.441232 lineto 141.878390 262.086309 lineto 140.413926 268.191313 lineto 139.103641 274.742661 lineto 137.950294 281.726916 lineto 136.956526 289.130435 lineto 136.956526 289.130435 lineto 133.122196 282.764845 lineto 129.534054 276.391100 lineto 126.194786 269.920005 lineto 123.107120 263.262222 lineto 120.273756 256.328500 lineto 117.697392 249.029558 lineto 115.380743 241.276129 lineto 113.326508 232.978935 lineto 111.537393 224.048693 lineto 110.016105 214.396139 lineto 108.765344 203.931976 lineto 107.787829 192.566955 lineto 107.086255 180.211793 lineto 106.663319 166.777196 lineto 106.521743 152.173913 lineto 106.521743 152.173913 lineto 106.686771 134.753505 lineto 107.192660 118.967081 lineto 108.055656 104.744350 lineto 109.291985 92.014942 lineto 110.917879 80.708536 lineto 112.949576 70.754783 lineto 115.403288 62.083349 lineto 118.295268 54.623896 lineto 121.641742 48.306088 lineto 125.458933 43.059578 lineto 129.763089 38.814041 lineto 134.570450 35.499129 lineto 139.897210 33.044510 lineto 145.759610 31.379840 lineto 152.173918 30.434783 lineto 152.173918 30.434783 lineto 152.173918 28.588857 lineto 152.173918 26.705056 lineto 152.173918 24.786087 lineto 152.173918 22.834653 lineto 152.173918 20.853462 lineto 152.173918 18.845217 lineto 152.173918 16.812624 lineto 152.173918 14.758389 lineto 152.173918 12.685217 lineto 152.173918 10.595814 lineto 152.173918 8.492882 lineto 152.173918 6.379130 lineto 152.173918 4.257262 lineto 152.173918 2.129984 lineto 152.173918 0.000000 lineto 152.173918 0.000000 lineto 143.044392 0.000000 lineto 133.920278 0.000000 lineto 124.806962 0.000000 lineto 115.709885 0.000000 lineto 106.634461 0.000000 lineto 97.586095 0.000000 lineto 88.570179 0.000000 lineto 79.592140 0.000000 lineto 70.657392 0.000000 lineto 61.771341 0.000000 lineto 52.939392 0.000000 lineto 44.166958 0.000000 lineto 35.459453 0.000000 lineto 26.822286 0.000000 lineto 18.260871 0.000000 lineto stroke 0.0 setgray 1 setlinewidth newpath 18.260871 0.000000 moveto 18.260871 10.652174 lineto 18.260871 21.304347 lineto 18.260871 30.434783 lineto 31.956521 30.434783 lineto 45.652175 34.999999 lineto 45.652175 45.652174 lineto 45.652175 121.739130 lineto 45.652175 213.043478 lineto 45.652175 273.913043 lineto 45.652175 292.173925 lineto 38.043480 304.347826 lineto 12.173914 304.347826 lineto 12.173914 315.000012 lineto 12.173914 325.652168 lineto 12.173914 334.782609 lineto 33.478263 334.782609 lineto 73.043484 334.782609 lineto 98.913047 334.782609 lineto 98.913047 324.130423 lineto 98.913047 311.956522 lineto 98.913047 301.304336 lineto 123.260880 334.782609 lineto 136.956526 350.000000 lineto 162.826090 350.000000 lineto 181.086957 350.000000 lineto 197.826094 327.173913 lineto 197.826094 289.130435 lineto 197.826094 243.478261 lineto 182.608702 228.260870 lineto 167.391310 228.260870 lineto 152.173918 228.260870 lineto 141.521747 251.086957 lineto 136.956526 289.130435 lineto 117.173914 257.173907 lineto 106.521743 228.260870 lineto 106.521743 152.173913 lineto 106.521743 60.869565 lineto 118.695659 33.478262 lineto 152.173918 30.434783 lineto 152.173918 21.304347 lineto 152.173918 10.652174 lineto 152.173918 0.000000 lineto 106.521743 0.000000 lineto 60.869567 0.000000 lineto 18.260871 0.000000 lineto stroke 0.0 setgray 18.260871 0.000000 moveto 18.260871 0.000000 3.000000 0.000000 360.000000 arc stroke 0.0 setgray 18.260871 10.652174 moveto 18.260871 10.652174 3.000000 0.000000 360.000000 arc stroke 18.260871 10.652174 moveto 1.0 setgray 18.260871 10.652174 2.800000 0.000000 360.000000 arc fill 0.0 setgray 18.260871 21.304347 moveto 18.260871 21.304347 3.000000 0.000000 360.000000 arc stroke 18.260871 21.304347 moveto 1.0 setgray 18.260871 21.304347 2.800000 0.000000 360.000000 arc fill 0.0 setgray 18.260871 30.434783 moveto 18.260871 30.434783 3.000000 0.000000 360.000000 arc stroke 18.260871 30.434783 moveto 1.0 setgray 18.260871 30.434783 2.800000 0.000000 360.000000 arc fill 0.0 setgray 31.956521 30.434783 moveto 31.956521 30.434783 3.000000 0.000000 360.000000 arc stroke 31.956521 30.434783 moveto 1.0 setgray 31.956521 30.434783 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 34.999999 moveto 45.652175 34.999999 3.000000 0.000000 360.000000 arc stroke 45.652175 34.999999 moveto 1.0 setgray 45.652175 34.999999 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 45.652174 moveto 45.652175 45.652174 3.000000 0.000000 360.000000 arc stroke 45.652175 45.652174 moveto 1.0 setgray 45.652175 45.652174 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 121.739130 moveto 45.652175 121.739130 3.000000 0.000000 360.000000 arc stroke 45.652175 121.739130 moveto 1.0 setgray 45.652175 121.739130 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 213.043478 moveto 45.652175 213.043478 3.000000 0.000000 360.000000 arc stroke 45.652175 213.043478 moveto 1.0 setgray 45.652175 213.043478 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 273.913043 moveto 45.652175 273.913043 3.000000 0.000000 360.000000 arc stroke 45.652175 273.913043 moveto 1.0 setgray 45.652175 273.913043 2.800000 0.000000 360.000000 arc fill 0.0 setgray 45.652175 292.173925 moveto 45.652175 292.173925 3.000000 0.000000 360.000000 arc stroke 45.652175 292.173925 moveto 1.0 setgray 45.652175 292.173925 2.800000 0.000000 360.000000 arc fill 0.0 setgray 38.043480 304.347826 moveto 38.043480 304.347826 3.000000 0.000000 360.000000 arc stroke 38.043480 304.347826 moveto 1.0 setgray 38.043480 304.347826 2.800000 0.000000 360.000000 arc fill 0.0 setgray 12.173914 304.347826 moveto 12.173914 304.347826 3.000000 0.000000 360.000000 arc stroke 12.173914 304.347826 moveto 1.0 setgray 12.173914 304.347826 2.800000 0.000000 360.000000 arc fill 0.0 setgray 12.173914 315.000012 moveto 12.173914 315.000012 3.000000 0.000000 360.000000 arc stroke 12.173914 315.000012 moveto 1.0 setgray 12.173914 315.000012 2.800000 0.000000 360.000000 arc fill 0.0 setgray 12.173914 325.652168 moveto 12.173914 325.652168 3.000000 0.000000 360.000000 arc stroke 12.173914 325.652168 moveto 1.0 setgray 12.173914 325.652168 2.800000 0.000000 360.000000 arc fill 0.0 setgray 12.173914 334.782609 moveto 12.173914 334.782609 3.000000 0.000000 360.000000 arc stroke 12.173914 334.782609 moveto 1.0 setgray 12.173914 334.782609 2.800000 0.000000 360.000000 arc fill 0.0 setgray 33.478263 334.782609 moveto 33.478263 334.782609 3.000000 0.000000 360.000000 arc stroke 33.478263 334.782609 moveto 1.0 setgray 33.478263 334.782609 2.800000 0.000000 360.000000 arc fill 0.0 setgray 73.043484 334.782609 moveto 73.043484 334.782609 3.000000 0.000000 360.000000 arc stroke 73.043484 334.782609 moveto 1.0 setgray 73.043484 334.782609 2.800000 0.000000 360.000000 arc fill 0.0 setgray 98.913047 334.782609 moveto 98.913047 334.782609 3.000000 0.000000 360.000000 arc stroke 98.913047 334.782609 moveto 1.0 setgray 98.913047 334.782609 2.800000 0.000000 360.000000 arc fill 0.0 setgray 98.913047 324.130423 moveto 98.913047 324.130423 3.000000 0.000000 360.000000 arc stroke 98.913047 324.130423 moveto 1.0 setgray 98.913047 324.130423 2.800000 0.000000 360.000000 arc fill 0.0 setgray 98.913047 311.956522 moveto 98.913047 311.956522 3.000000 0.000000 360.000000 arc stroke 98.913047 311.956522 moveto 1.0 setgray 98.913047 311.956522 2.800000 0.000000 360.000000 arc fill 0.0 setgray 98.913047 301.304336 moveto 98.913047 301.304336 3.000000 0.000000 360.000000 arc stroke 98.913047 301.304336 moveto 1.0 setgray 98.913047 301.304336 2.800000 0.000000 360.000000 arc fill 0.0 setgray 123.260880 334.782609 moveto 123.260880 334.782609 3.000000 0.000000 360.000000 arc stroke 123.260880 334.782609 moveto 1.0 setgray 123.260880 334.782609 2.800000 0.000000 360.000000 arc fill 0.0 setgray 136.956526 350.000000 moveto 136.956526 350.000000 3.000000 0.000000 360.000000 arc stroke 136.956526 350.000000 moveto 1.0 setgray 136.956526 350.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 162.826090 350.000000 moveto 162.826090 350.000000 3.000000 0.000000 360.000000 arc stroke 162.826090 350.000000 moveto 1.0 setgray 162.826090 350.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 181.086957 350.000000 moveto 181.086957 350.000000 3.000000 0.000000 360.000000 arc stroke 181.086957 350.000000 moveto 1.0 setgray 181.086957 350.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 197.826094 327.173913 moveto 197.826094 327.173913 3.000000 0.000000 360.000000 arc stroke 197.826094 327.173913 moveto 1.0 setgray 197.826094 327.173913 2.800000 0.000000 360.000000 arc fill 0.0 setgray 197.826094 289.130435 moveto 197.826094 289.130435 3.000000 0.000000 360.000000 arc stroke 197.826094 289.130435 moveto 1.0 setgray 197.826094 289.130435 2.800000 0.000000 360.000000 arc fill 0.0 setgray 197.826094 243.478261 moveto 197.826094 243.478261 3.000000 0.000000 360.000000 arc stroke 197.826094 243.478261 moveto 1.0 setgray 197.826094 243.478261 2.800000 0.000000 360.000000 arc fill 0.0 setgray 182.608702 228.260870 moveto 182.608702 228.260870 3.000000 0.000000 360.000000 arc stroke 182.608702 228.260870 moveto 1.0 setgray 182.608702 228.260870 2.800000 0.000000 360.000000 arc fill 0.0 setgray 167.391310 228.260870 moveto 167.391310 228.260870 3.000000 0.000000 360.000000 arc stroke 167.391310 228.260870 moveto 1.0 setgray 167.391310 228.260870 2.800000 0.000000 360.000000 arc fill 0.0 setgray 152.173918 228.260870 moveto 152.173918 228.260870 3.000000 0.000000 360.000000 arc stroke 152.173918 228.260870 moveto 1.0 setgray 152.173918 228.260870 2.800000 0.000000 360.000000 arc fill 0.0 setgray 141.521747 251.086957 moveto 141.521747 251.086957 3.000000 0.000000 360.000000 arc stroke 141.521747 251.086957 moveto 1.0 setgray 141.521747 251.086957 2.800000 0.000000 360.000000 arc fill 0.0 setgray 136.956526 289.130435 moveto 136.956526 289.130435 3.000000 0.000000 360.000000 arc stroke 136.956526 289.130435 moveto 1.0 setgray 136.956526 289.130435 2.800000 0.000000 360.000000 arc fill 0.0 setgray 117.173914 257.173907 moveto 117.173914 257.173907 3.000000 0.000000 360.000000 arc stroke 117.173914 257.173907 moveto 1.0 setgray 117.173914 257.173907 2.800000 0.000000 360.000000 arc fill 0.0 setgray 106.521743 228.260870 moveto 106.521743 228.260870 3.000000 0.000000 360.000000 arc stroke 106.521743 228.260870 moveto 1.0 setgray 106.521743 228.260870 2.800000 0.000000 360.000000 arc fill 0.0 setgray 106.521743 152.173913 moveto 106.521743 152.173913 3.000000 0.000000 360.000000 arc stroke 106.521743 152.173913 moveto 1.0 setgray 106.521743 152.173913 2.800000 0.000000 360.000000 arc fill 0.0 setgray 106.521743 60.869565 moveto 106.521743 60.869565 3.000000 0.000000 360.000000 arc stroke 106.521743 60.869565 moveto 1.0 setgray 106.521743 60.869565 2.800000 0.000000 360.000000 arc fill 0.0 setgray 118.695659 33.478262 moveto 118.695659 33.478262 3.000000 0.000000 360.000000 arc stroke 118.695659 33.478262 moveto 1.0 setgray 118.695659 33.478262 2.800000 0.000000 360.000000 arc fill 0.0 setgray 152.173918 30.434783 moveto 152.173918 30.434783 3.000000 0.000000 360.000000 arc stroke 152.173918 30.434783 moveto 1.0 setgray 152.173918 30.434783 2.800000 0.000000 360.000000 arc fill 0.0 setgray 152.173918 21.304347 moveto 152.173918 21.304347 3.000000 0.000000 360.000000 arc stroke 152.173918 21.304347 moveto 1.0 setgray 152.173918 21.304347 2.800000 0.000000 360.000000 arc fill 0.0 setgray 152.173918 10.652174 moveto 152.173918 10.652174 3.000000 0.000000 360.000000 arc stroke 152.173918 10.652174 moveto 1.0 setgray 152.173918 10.652174 2.800000 0.000000 360.000000 arc fill 0.0 setgray 152.173918 0.000000 moveto 152.173918 0.000000 3.000000 0.000000 360.000000 arc stroke 152.173918 0.000000 moveto 1.0 setgray 152.173918 0.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 106.521743 0.000000 moveto 106.521743 0.000000 3.000000 0.000000 360.000000 arc stroke 106.521743 0.000000 moveto 1.0 setgray 106.521743 0.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 60.869567 0.000000 moveto 60.869567 0.000000 3.000000 0.000000 360.000000 arc stroke 60.869567 0.000000 moveto 1.0 setgray 60.869567 0.000000 2.800000 0.000000 360.000000 arc fill 0.0 setgray 18.260871 0.000000 moveto 18.260871 0.000000 3.000000 0.000000 360.000000 arc stroke 1 setlinewidth 0.0 setgray 18.260871 0.000000 3.000000 0.000000 360.000000 arc fill 18.260871 30.434783 3.000000 0.000000 360.000000 arc fill 45.652175 45.652174 3.000000 0.000000 360.000000 arc fill 45.652175 273.913043 3.000000 0.000000 360.000000 arc fill 12.173914 304.347826 3.000000 0.000000 360.000000 arc fill 12.173914 334.782609 3.000000 0.000000 360.000000 arc fill 98.913047 334.782609 3.000000 0.000000 360.000000 arc fill 98.913047 301.304336 3.000000 0.000000 360.000000 arc fill 162.826090 350.000000 3.000000 0.000000 360.000000 arc fill 197.826094 289.130435 3.000000 0.000000 360.000000 arc fill 167.391310 228.260870 3.000000 0.000000 360.000000 arc fill 136.956526 289.130435 3.000000 0.000000 360.000000 arc fill 106.521743 152.173913 3.000000 0.000000 360.000000 arc fill 152.173918 30.434783 3.000000 0.000000 360.000000 arc fill 152.173918 0.000000 3.000000 0.000000 360.000000 arc fill 250 0 translate 0.7 setgray newpath 18.260871 0.000000 moveto 18.260871 2.129984 lineto 18.260871 4.257262 lineto 18.260871 6.379130 lineto 18.260871 8.492882 lineto 18.260871 10.595814 lineto 18.260871 12.685217 lineto 18.260871 14.758389 lineto 18.260871 16.812624 lineto 18.260871 18.845217 lineto 18.260871 20.853462 lineto 18.260871 22.834653 lineto 18.260871 24.786087 lineto 18.260871 26.705056 lineto 18.260871 28.588857 lineto 18.260871 30.434783 lineto 18.260871 30.434783 lineto 20.995941 30.496101 lineto 23.706668 30.681868 lineto 26.368697 30.994785 lineto 28.957683 31.437552 lineto 31.449275 32.012883 lineto 33.819131 32.723477 lineto 36.042900 33.572045 lineto 38.096232 34.561288 lineto 39.954782 35.693911 lineto 41.594205 36.972627 lineto 42.990148 38.400129 lineto 44.118262 39.979129 lineto 44.954203 41.712338 lineto 45.473625 43.602448 lineto 45.652175 45.652174 lineto 45.652175 45.652174 lineto 45.652175 61.058938 lineto 45.652175 76.790345 lineto 45.652175 92.765213 lineto 45.652175 108.902424 lineto 45.652175 125.120775 lineto 45.652175 141.339132 lineto 45.652175 157.476336 lineto 45.652175 173.451204 lineto 45.652175 189.182611 lineto 45.652175 204.589361 lineto 45.652175 219.590328 lineto 45.652175 234.104345 lineto 45.652175 248.050229 lineto 45.652175 261.346871 lineto 45.652175 273.913043 lineto 45.652175 273.913043 lineto 45.547570 277.482261 lineto 45.221127 280.878316 lineto 44.653916 284.090440 lineto 43.826990 287.107750 lineto 42.721418 289.919505 lineto 41.318261 292.514793 lineto 39.598585 294.882816 lineto 37.543446 297.012835 lineto 35.133914 298.893908 lineto 32.351049 300.515295 lineto 29.175911 301.866171 lineto 25.589564 302.935650 lineto 21.573077 303.712965 lineto 17.107504 304.187319 lineto 12.173914 304.347826 lineto 12.173914 304.347826 lineto 12.173914 306.477816 lineto 12.173914 308.605078 lineto 12.173914 310.726941 lineto 12.173914 312.840706 lineto 12.173914 314.943645 lineto 12.173914 317.033030 lineto 12.173914 319.106218 lineto 12.173914 321.160453 lineto 12.173914 323.193036 lineto 12.173914 325.201267 lineto 12.173914 327.182475 lineto 12.173914 329.133904 lineto 12.173914 331.052884 lineto 12.173914 332.936656 lineto 12.173914 334.782609 lineto 12.173914 334.782609 lineto 16.668793 334.782609 lineto 21.593817 334.782609 lineto 26.892175 334.782609 lineto 32.507054 334.782609 lineto 38.381645 334.782609 lineto 44.459134 334.782609 lineto 50.682704 334.782609 lineto 56.995556 334.782609 lineto 63.340875 334.782609 lineto 69.661839 334.782609 lineto 75.901650 334.782609 lineto 82.003483 334.782609 lineto 87.910538 334.782609 lineto 93.565991 334.782609 lineto 98.913047 334.782609 lineto 98.913047 334.782609 lineto 98.913047 332.632766 lineto 98.913047 330.447773 lineto 98.913047 328.233031 lineto 98.913047 325.993965 lineto 98.913047 323.735917 lineto 98.913047 321.464344 lineto 98.913047 319.184643 lineto 98.913047 316.902302 lineto 98.913047 314.622601 lineto 98.913047 312.351028 lineto 98.913047 310.092980 lineto 98.913047 307.853914 lineto 98.913047 305.639172 lineto 98.913047 303.454179 lineto 98.913047 301.304336 lineto 98.913047 301.304336 lineto 103.647344 307.757407 lineto 108.138174 313.728925 lineto 112.426098 319.224349 lineto 116.551693 324.248990 lineto 120.555566 328.808362 lineto 124.478270 332.907834 lineto 128.360404 336.552777 lineto 132.242524 339.748648 lineto 136.165221 342.500873 lineto 140.169086 344.814823 lineto 144.294696 346.695896 lineto 148.582613 348.149548 lineto 153.073442 349.181179 lineto 157.807733 349.796216 lineto 162.826090 350.000000 lineto 162.826090 350.000000 lineto 166.453458 349.697909 lineto 170.013199 348.800634 lineto 173.478261 347.321759 lineto 176.821578 345.274722 lineto 180.016113 342.673107 lineto 183.034787 339.530439 lineto 185.850562 335.860215 lineto 188.436403 331.675990 lineto 190.765213 326.991318 lineto 192.809986 321.819637 lineto 194.543642 316.174561 lineto 195.939143 310.069557 lineto 196.969425 303.518208 lineto 197.607420 296.533954 lineto 197.826094 289.130435 lineto 197.826094 289.130435 lineto 197.627709 280.401292 lineto 197.050578 272.456692 lineto 196.121753 265.269553 lineto 194.868285 258.812884 lineto 193.317239 253.059574 lineto 191.495668 247.982601 lineto 189.430606 243.554916 lineto 187.149106 239.749436 lineto 184.678262 236.539140 lineto 182.045082 233.896933 lineto 179.276647 231.795809 lineto 176.400006 230.208700 lineto 173.442198 229.108526 lineto 170.430272 228.468267 lineto 167.391310 228.260870 lineto 167.391310 228.260870 lineto 164.409150 228.562975 lineto 161.551433 229.460221 lineto 158.820875 230.939139 lineto 156.220159 232.986148 lineto 153.752015 235.587763 lineto 151.419141 238.730431 lineto 149.224222 242.400640 lineto 147.169987 246.584880 lineto 145.259134 251.269552 lineto 143.494379 256.441232 lineto 141.878390 262.086309 lineto 140.413926 268.191313 lineto 139.103641 274.742661 lineto 137.950294 281.726916 lineto 136.956526 289.130435 lineto 136.956526 289.130435 lineto 133.122196 282.764845 lineto 129.534054 276.391100 lineto 126.194786 269.920005 lineto 123.107120 263.262222 lineto 120.273756 256.328500 lineto 117.697392 249.029558 lineto 115.380743 241.276129 lineto 113.326508 232.978935 lineto 111.537393 224.048693 lineto 110.016105 214.396139 lineto 108.765344 203.931976 lineto 107.787829 192.566955 lineto 107.086255 180.211793 lineto 106.663319 166.777196 lineto 106.521743 152.173913 lineto 106.521743 152.173913 lineto 106.686771 134.753505 lineto 107.192660 118.967081 lineto 108.055656 104.744350 lineto 109.291985 92.014942 lineto 110.917879 80.708536 lineto 112.949576 70.754783 lineto 115.403288 62.083349 lineto 118.295268 54.623896 lineto 121.641742 48.306088 lineto 125.458933 43.059578 lineto 129.763089 38.814041 lineto 134.570450 35.499129 lineto 139.897210 33.044510 lineto 145.759610 31.379840 lineto 152.173918 30.434783 lineto 152.173918 30.434783 lineto 152.173918 28.588857 lineto 152.173918 26.705056 lineto 152.173918 24.786087 lineto 152.173918 22.834653 lineto 152.173918 20.853462 lineto 152.173918 18.845217 lineto 152.173918 16.812624 lineto 152.173918 14.758389 lineto 152.173918 12.685217 lineto 152.173918 10.595814 lineto 152.173918 8.492882 lineto 152.173918 6.379130 lineto 152.173918 4.257262 lineto 152.173918 2.129984 lineto 152.173918 0.000000 lineto 152.173918 0.000000 lineto 143.044392 0.000000 lineto 133.920278 0.000000 lineto 124.806962 0.000000 lineto 115.709885 0.000000 lineto 106.634461 0.000000 lineto 97.586095 0.000000 lineto 88.570179 0.000000 lineto 79.592140 0.000000 lineto 70.657392 0.000000 lineto 61.771341 0.000000 lineto 52.939392 0.000000 lineto 44.166958 0.000000 lineto 35.459453 0.000000 lineto 26.822286 0.000000 lineto 18.260871 0.000000 lineto fill showpage :::::::::::::: ratbez.c :::::::::::::: #include float ratbez(degree,coeff,weight,t) /* uses rational de casteljau to compute point on ratbez curve for param. value t. */ float coeff[],weight[]; float t; int degree; { int r,i; float t1,t2,ww1,ww2; float coeffa[20], weighta[20]; t1 = 1.0 - t; for (i=0;i<=degree; i++) { coeffa[i]=coeff[i]; weighta[i]=weight[i]; } for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) { /* t1= (i+r-degree*t)/(float)r; t2= 1.0-t1; ... makes it interpolatory ... */ t1=1.0-t; t2=t; ww1 = weighta[i]; ww2= weighta[i+1]; weighta[i] = t1*ww1 + t2*ww2; coeffa[i] = ( t1*ww1 * coeffa[i] + t2*ww2 * coeffa[i+1] ) / weighta[i]; } return (coeffa[0]); } :::::::::::::: ratbez_kappas. :::::::::::::: #include #include extern FILE *outfile; void ratbez_kappas(bez_x,bez_y,bez_w,l,dense) /* writes curvatures of piecewise cubic rational curve into a file. input: bez_x,bez_y: 2D rat. cubic spline polygon bez_w: the weights dense: how many curvature values to compute per interval l: no. of intervals output: written into file outfile Note: this plots curvatures vs. a uniform u-spacing */ float bez_x[],bez_y[],bez_w[]; int dense,l; { float bleftx[4],blefty[4],brightx[4],brighty[4]; float wleft[4], wright[4],coeffx[4],coeffy[4],weight[4]; float dist,t,delt,h,u,diff; int i,j,i3; float curvature_0(),curvature_1(),abs(); /* Plot kappas for each interval. */ fprintf(outfile,"%d %d\n",dense*l,dense); for(i=0; i2. */ delta_im1=(knot[1]-knot[0]); delta_i =(knot[2]-knot[1]); delta_ip1=(knot[3]-knot[2]); sum = delta_im1+delta_i; beta[0]=1.0; gamma[0]=0.0; alpha[1]=delta_i*delta_i/sum; beta[1] =(delta_i*delta_im1)/sum + delta_im1*(delta_i+delta_ip1) / (sum+delta_ip1); gamma[1]=delta_im1*delta_im1/(sum+delta_ip1); alpha[1]=alpha[1]/sum; beta[1] =beta[1]/sum; gamma[1]=gamma[1]/sum; /*Now for the main loop: */ for(i=2; i0; i--) d[i+1]=(aux[i]-gamma[i]*d[i+2])/up[i]; d[l+2]=rhs[l+2]; } :::::::::::::: stabil.ps :::::::::::::: %this is figure {fig:stabil} in chapter xxxx3.5 setlinewidth 70 600 translate 1.2 1.2 scale newpath 38.888889 0.000000 moveto 39.472708 0.567652 lineto 40.056509 1.104364 lineto 40.640306 1.612150 lineto 41.224084 2.092905 lineto 41.807848 2.548414 lineto 42.391602 2.980352 lineto 42.975343 3.390298 lineto 43.559070 3.779732 lineto 44.142787 4.150046 lineto 44.726491 4.502549 lineto 45.310181 4.838467 lineto 45.893857 5.158952 lineto 46.477523 5.465083 lineto 47.061176 5.757874 lineto 47.644815 6.038272 lineto 48.228439 6.307168 lineto 48.812055 6.565394 lineto 49.395661 6.813728 lineto 49.979249 7.052899 lineto 50.562832 7.283589 lineto 51.146397 7.506435 lineto 51.729952 7.722032 lineto 52.313498 7.930934 lineto 52.897030 8.133661 lineto 53.480548 8.330696 lineto 54.064057 8.522488 lineto 54.647557 8.709459 lineto 55.231047 8.891997 lineto 55.814524 9.070469 lineto 56.397986 9.245211 lineto 56.981444 9.416538 lineto 57.564888 9.584741 lineto 58.148323 9.750091 lineto 58.731749 9.912840 lineto 59.315165 10.073219 lineto 59.898567 10.231445 lineto 60.481965 10.387717 lineto 61.065349 10.542220 lineto 61.648728 10.695122 lineto 62.232093 10.846582 lineto 62.815454 10.996744 lineto 63.398800 11.145741 lineto 63.982142 11.293697 lineto 64.565475 11.440724 lineto 65.148803 11.586925 lineto 65.732117 11.732396 lineto 66.315427 11.877222 lineto 66.898727 12.021486 lineto 67.482023 12.165258 lineto 68.065310 12.308604 lineto 68.648591 12.451585 lineto 69.231864 12.594255 lineto 69.815132 12.736665 lineto 70.398390 12.878859 lineto 70.981644 13.020878 lineto 71.564894 13.162759 lineto 72.148134 13.304533 lineto 72.731369 13.446232 lineto 73.314600 13.587881 lineto 73.897826 13.729504 lineto 74.481048 13.871122 lineto 75.064260 14.012752 lineto 75.647472 14.154411 lineto 76.230680 14.296114 lineto 76.813878 14.437872 lineto 77.397076 14.579696 lineto 77.980275 14.721596 lineto 78.563464 14.863578 lineto 79.146643 15.005650 lineto 79.729833 15.147815 lineto 80.313012 15.290080 lineto 80.896183 15.432446 lineto 81.479363 15.574917 lineto 82.062533 15.717493 lineto 82.645704 15.860175 lineto 83.228865 16.002966 lineto 83.812026 16.145863 lineto 84.395187 16.288866 lineto 84.978349 16.431975 lineto 85.561510 16.575187 lineto 86.144671 16.718502 lineto 86.727823 16.861918 lineto 87.310975 17.005429 lineto 87.894136 17.149039 lineto 88.477288 17.292739 lineto 89.060440 17.436530 lineto 89.643592 17.580408 lineto 90.226744 17.724371 lineto 90.809896 17.868414 lineto 91.393048 18.012535 lineto 91.976200 18.156732 lineto 92.559352 18.300999 lineto 93.142504 18.445336 lineto 93.725656 18.589738 lineto 94.308808 18.734202 lineto 94.891960 18.878726 lineto 95.475112 19.023305 lineto 96.058273 19.167936 lineto 96.641425 19.312619 lineto 97.224587 19.457346 lineto 97.807748 19.602119 lineto 98.390909 19.746931 lineto 98.974070 19.891783 lineto 99.557232 20.036669 lineto 100.140402 20.181585 lineto 100.723563 20.326532 lineto 101.306734 20.471506 lineto 101.889904 20.616504 lineto 102.473084 20.761522 lineto 103.056255 20.906559 lineto 103.639434 21.051610 lineto 104.222614 21.196677 lineto 104.805803 21.341754 lineto 105.388992 21.486837 lineto 105.972172 21.631925 lineto 106.555370 21.777018 lineto 107.138560 21.922108 lineto 107.721758 22.067198 lineto 108.304956 22.212281 lineto 108.888164 22.357358 lineto 109.471371 22.502423 lineto 110.054579 22.647476 lineto 110.637787 22.792513 lineto 111.221004 22.937534 lineto 111.804230 23.082531 lineto 112.387447 23.227503 lineto 112.970673 23.372452 lineto 113.553899 23.517369 lineto 114.137134 23.662253 lineto 114.720370 23.807104 lineto 115.303605 23.951914 lineto 115.886850 24.096684 lineto 116.470095 24.241408 lineto 117.053339 24.386086 lineto 117.636593 24.530710 lineto 118.219856 24.675282 lineto 118.803110 24.819795 lineto 119.386374 24.964245 lineto 119.969637 25.108631 lineto 120.552909 25.252947 lineto 121.136182 25.397191 lineto 121.719464 25.541357 lineto 122.302745 25.685441 lineto 122.886027 25.829439 lineto 123.469309 25.973350 lineto 124.052600 26.117165 lineto 124.635900 26.260881 lineto 125.219191 26.404495 lineto 125.802501 26.548000 lineto 126.385801 26.691391 lineto 126.969111 26.834664 lineto 127.552421 26.977814 lineto 128.135730 27.120834 lineto 128.719049 27.263720 lineto 129.302377 27.406467 lineto 129.885696 27.549068 lineto 130.469024 27.691516 lineto 131.052352 27.833806 lineto 131.635690 27.975931 lineto 132.219027 28.117886 lineto 132.802365 28.259661 lineto 133.385702 28.401254 lineto 133.969049 28.542656 lineto 134.552395 28.683859 lineto 135.135751 28.824856 lineto 135.719107 28.965642 lineto 136.302463 29.106205 lineto 136.885819 29.246539 lineto 137.469184 29.386639 lineto 138.052540 29.526493 lineto 138.635915 29.666094 lineto 139.219280 29.805433 lineto 139.802655 29.944502 lineto 140.386020 30.083292 lineto 140.969404 30.221794 lineto 141.552778 30.360000 lineto 142.136153 30.497898 lineto 142.719536 30.635480 lineto 143.302920 30.772736 lineto 143.886304 30.909655 lineto 144.469697 31.046230 lineto 145.053081 31.182447 lineto 145.636474 31.318298 lineto 146.219867 31.453771 lineto 146.803260 31.588854 lineto 147.386653 31.723539 lineto 147.970055 31.857814 lineto 148.553448 31.991667 lineto 149.136851 32.125086 lineto 149.720253 32.258058 lineto 150.303655 32.390576 lineto 150.887058 32.522623 lineto 151.470460 32.654190 lineto 152.053862 32.785262 lineto 152.637274 32.915828 lineto 153.220676 33.045877 lineto 153.804088 33.175390 lineto 154.387490 33.304362 lineto 154.970902 33.432774 lineto 155.554304 33.560616 lineto 156.137715 33.687875 lineto 156.721118 33.814533 lineto 157.304539 33.940579 lineto 157.887941 34.066001 lineto 158.471362 34.190781 lineto 159.054764 34.314910 lineto 159.638166 34.438369 lineto 160.221587 34.561145 lineto 160.804990 34.683225 lineto 161.388410 34.804593 lineto 161.971813 34.925236 lineto 162.555215 35.045137 lineto 163.138636 35.164280 lineto 163.722038 35.282656 lineto 164.305441 35.400243 lineto 164.888861 35.517029 lineto 165.472264 35.633001 lineto 166.055666 35.748139 lineto 166.639068 35.862430 lineto 167.222471 35.975860 lineto 167.805873 36.088413 lineto 168.389275 36.200069 lineto 168.972678 36.310818 lineto 169.556080 36.420643 lineto 170.139482 36.529527 lineto 170.722885 36.637456 lineto 171.306268 36.744411 lineto 171.889671 36.850381 lineto 172.473073 36.955348 lineto 173.056457 37.059294 lineto 173.639841 37.162207 lineto 174.223243 37.264070 lineto 174.806627 37.364868 lineto 175.390010 37.464585 lineto 175.973394 37.563202 lineto 176.556778 37.660707 lineto 177.140162 37.757085 lineto 177.723545 37.852321 lineto 178.306929 37.946395 lineto 178.890313 38.039297 lineto 179.473678 38.131007 lineto 180.057062 38.221514 lineto 180.640427 38.310799 lineto 181.223792 38.398852 lineto 181.807176 38.485652 lineto 182.390542 38.571190 lineto 182.973907 38.655447 lineto 183.557272 38.738409 lineto 184.140619 38.820066 lineto 184.723984 38.900400 lineto 185.307349 38.979396 lineto 185.890696 39.057038 lineto 186.474042 39.133318 lineto 187.057408 39.208220 lineto 187.640754 39.281732 lineto 188.224101 39.353839 lineto 188.807448 39.424523 lineto 189.390794 39.493779 lineto 189.974141 39.561593 lineto 190.557469 39.627947 lineto 191.140816 39.692831 lineto 191.724144 39.756236 lineto 192.307472 39.818149 lineto 192.890819 39.878555 lineto 193.474147 39.937445 lineto 194.057475 39.994810 lineto 194.640803 40.050636 lineto 195.224131 40.104913 lineto 195.807441 40.157628 lineto 196.390769 40.208776 lineto 196.974079 40.258343 lineto 197.557407 40.306325 lineto 198.140717 40.352703 lineto 198.724026 40.397476 lineto 199.307336 40.440632 lineto 199.890645 40.482165 lineto 200.473955 40.522062 lineto 201.057265 40.560318 lineto 201.640574 40.596928 lineto 202.223884 40.631878 lineto 202.807175 40.665168 lineto 203.390484 40.696790 lineto 203.973775 40.726733 lineto 204.557066 40.754994 lineto 205.140376 40.781571 lineto 205.723667 40.806452 lineto 206.306958 40.829637 lineto 206.890249 40.851115 lineto 207.473540 40.870887 lineto 208.056831 40.888953 lineto 208.640104 40.905299 lineto 209.223395 40.919930 lineto 209.806686 40.932841 lineto 210.389958 40.944028 lineto 210.973250 40.953490 lineto 211.556541 40.961223 lineto 212.139813 40.967226 lineto 212.723086 40.971500 lineto 213.306377 40.974041 lineto 213.889649 40.974852 lineto 214.472922 40.973930 lineto 215.056213 40.971278 lineto 215.639485 40.966892 lineto 216.222758 40.960777 lineto 216.806030 40.952938 lineto 217.389303 40.943365 lineto 217.972575 40.932072 lineto 218.555848 40.919054 lineto 219.139120 40.904317 lineto 219.722393 40.887864 lineto 220.305665 40.869696 lineto 220.888938 40.849817 lineto 221.472210 40.828232 lineto 222.055483 40.804946 lineto 222.638755 40.779963 lineto 223.222028 40.753292 lineto 223.805300 40.724930 lineto 224.388573 40.694894 lineto 224.971845 40.663179 lineto 225.555118 40.629796 lineto 226.138390 40.594753 lineto 226.721663 40.558055 lineto 227.304954 40.519716 lineto 227.888227 40.479732 lineto 228.471499 40.438120 lineto 229.054772 40.394885 lineto 229.638044 40.350033 lineto 230.221317 40.303581 lineto 230.804608 40.255529 lineto 231.387880 40.205893 lineto 231.971153 40.154680 lineto 232.554444 40.101895 lineto 233.137716 40.047557 lineto 233.721007 39.991676 lineto 234.304280 39.934256 lineto 234.887571 39.875315 lineto 235.470862 39.814858 lineto 236.054134 39.752899 lineto 236.637425 39.689451 lineto 237.220716 39.624525 lineto 237.804008 39.558134 lineto 238.387299 39.490288 lineto 238.970590 39.421004 lineto 239.553881 39.350292 lineto 240.137190 39.278162 lineto 240.720481 39.204632 lineto 241.303772 39.129715 lineto 241.887082 39.053422 lineto 242.470373 38.975771 lineto 243.053683 38.896765 lineto 243.636992 38.816434 lineto 244.220302 38.734779 lineto 244.803611 38.651822 lineto 245.386921 38.567576 lineto 245.970231 38.482052 lineto 246.553540 38.395266 lineto 247.136868 38.307237 lineto 247.720178 38.217974 lineto 248.303506 38.127495 lineto 248.886834 38.035818 lineto 249.470144 37.942951 lineto 250.053472 37.848916 lineto 250.636800 37.753724 lineto 251.220128 37.657395 lineto 251.803475 37.559938 lineto 252.386803 37.461374 lineto 252.970150 37.361716 lineto 253.553478 37.260980 lineto 254.136825 37.159182 lineto 254.720171 37.056336 lineto 255.303518 36.952462 lineto 255.886865 36.847570 lineto 256.470211 36.741681 lineto 257.053558 36.634804 lineto 257.636905 36.526963 lineto 258.220270 36.418168 lineto 258.803635 36.308436 lineto 259.386982 36.197781 lineto 259.970347 36.086220 lineto 260.553712 35.973771 lineto 261.137078 35.860446 lineto 261.720443 35.746261 lineto 262.303827 35.631232 lineto 262.887192 35.515374 lineto 263.470576 35.398702 lineto 264.053941 35.281232 lineto 264.637325 35.162979 lineto 265.220708 35.043957 lineto 265.804092 34.924181 lineto 266.387476 34.803668 lineto 266.970860 34.682429 lineto 267.554262 34.560482 lineto 268.137646 34.437839 lineto 268.721029 34.314516 lineto 269.304432 34.190526 lineto 269.887834 34.065883 lineto 270.471218 33.940604 lineto 271.054620 33.814699 lineto 271.638023 33.688183 lineto 272.221425 33.561071 lineto 272.804827 33.433377 lineto 273.388229 33.305110 lineto 273.971650 33.176287 lineto 274.555053 33.046922 lineto 275.138455 32.917024 lineto 275.721876 32.786606 lineto 276.305297 32.655685 lineto 276.888699 32.524269 lineto 277.472120 32.392372 lineto 278.055541 32.260008 lineto 278.638943 32.127184 lineto 279.222364 31.993915 lineto 279.805785 31.860213 lineto 280.389206 31.726089 lineto 280.972626 31.591552 lineto 281.556047 31.456617 lineto 282.139468 31.321292 lineto 282.722889 31.185588 lineto 283.306310 31.049516 lineto 283.889731 30.913086 lineto 284.473152 30.776308 lineto 285.056591 30.639194 lineto 285.640012 30.501750 lineto 286.223433 30.363990 lineto 286.806854 30.225920 lineto 287.390274 30.087550 lineto 287.973695 29.948892 lineto 288.557135 29.809949 lineto 289.140556 29.670737 lineto 289.723976 29.531258 lineto 290.307397 29.391523 lineto 290.890818 29.251541 lineto 291.474239 29.111321 lineto 292.057660 28.970866 lineto 292.641081 28.830190 lineto 293.224502 28.689295 lineto 293.807922 28.548191 lineto 294.391343 28.406886 lineto 294.974746 28.265384 lineto 295.558167 28.123694 lineto 296.141587 27.981824 lineto 296.724990 27.839777 lineto 297.308411 27.697561 lineto 297.891813 27.555183 lineto 298.475215 27.412649 lineto 299.058617 27.269962 lineto 299.642020 27.127132 lineto 300.225422 26.984160 lineto 300.808824 26.841054 lineto 301.392227 26.697821 lineto 301.975629 26.554462 lineto 302.559013 26.410987 lineto 303.142415 26.267394 lineto 303.725799 26.123695 lineto 304.309183 25.979891 lineto 304.892566 25.835985 lineto 305.475950 25.691984 lineto 306.059334 25.547891 lineto 306.642699 25.403712 lineto 307.226083 25.259449 lineto 307.809448 25.115105 lineto 308.392813 24.970687 lineto 308.976179 24.826195 lineto 309.559544 24.681635 lineto 310.142891 24.537011 lineto 310.726256 24.392326 lineto 311.309603 24.247581 lineto 311.892949 24.102783 lineto 312.476296 23.957931 lineto 313.059643 23.813031 lineto 313.642952 23.668087 lineto 314.226299 23.523099 lineto 314.809608 23.378071 lineto 315.392955 23.233008 lineto 315.976265 23.087909 lineto 316.559574 22.942781 lineto 317.142884 22.797624 lineto 317.726194 22.652441 lineto 318.309503 22.507235 lineto 318.892813 22.362008 lineto 319.476122 22.216764 lineto 320.059395 22.071505 lineto 320.642667 21.926234 lineto 321.225977 21.780951 lineto 321.809249 21.635664 lineto 322.392522 21.490372 lineto 322.975794 21.345078 lineto 323.559067 21.199783 lineto 324.142302 21.054491 lineto 324.725575 20.909209 lineto 325.308810 20.763933 lineto 325.892083 20.618669 lineto 326.475318 20.473419 lineto 327.058554 20.328185 lineto 327.641789 20.182971 lineto 328.225025 20.037782 lineto 328.808223 19.892617 lineto 329.391458 19.747483 lineto 329.974657 19.602379 lineto 330.557892 19.457309 lineto 331.141090 19.312277 lineto 331.724289 19.167286 lineto 332.307487 19.022340 lineto 332.890685 18.877441 lineto 333.473847 18.732591 lineto 334.057045 18.587797 lineto 334.640206 18.443059 lineto 335.223405 18.298381 lineto 335.806566 18.153768 lineto 336.389727 18.009221 lineto 336.972888 17.864745 lineto 337.556050 17.720344 lineto 338.139211 17.576019 lineto 338.722335 17.431775 lineto 339.305496 17.287614 lineto 339.888620 17.143540 lineto 340.471782 16.999556 lineto 341.054906 16.855664 lineto 341.638030 16.711868 lineto 342.221154 16.568170 lineto 342.804278 16.424571 lineto 343.387402 16.281074 lineto 343.970527 16.137681 lineto 344.553614 15.994394 lineto 345.136738 15.851211 lineto 345.719825 15.708137 lineto 346.302949 15.565167 lineto 346.886036 15.422304 lineto 347.469123 15.279545 lineto 348.052247 15.136888 lineto 348.635334 14.994332 lineto 349.218422 14.851870 lineto 349.801509 14.709499 lineto 350.384596 14.567212 lineto 350.967683 14.425003 lineto 351.550770 14.282861 lineto 352.133820 14.140779 lineto 352.716907 13.998743 lineto 353.299994 13.856739 lineto 353.883081 13.714753 lineto 354.466131 13.572765 lineto 355.049218 13.430755 lineto 355.632305 13.288700 lineto 356.215355 13.146575 lineto 356.798442 13.004349 lineto 357.381529 12.861992 lineto 357.964579 12.719466 lineto 358.547666 12.576731 lineto 359.130753 12.433743 lineto 359.713840 12.290452 lineto 360.296890 12.146804 lineto 360.879978 12.002740 lineto 361.463065 11.858192 lineto 362.046152 11.713090 lineto 362.629239 11.567354 lineto 363.212326 11.420897 lineto 363.795413 11.273626 lineto 364.378500 11.125437 lineto 364.961587 10.976217 lineto 365.544674 10.825845 lineto 366.127798 10.674188 lineto 366.710885 10.521100 lineto 367.294010 10.366426 lineto 367.877134 10.209996 lineto 368.460221 10.051625 lineto 369.043345 9.891116 lineto 369.626469 9.728251 lineto 370.209630 9.562802 lineto 370.792754 9.394514 lineto 371.375879 9.223120 lineto 371.959040 9.048327 lineto 372.542201 8.869821 lineto 373.125362 8.687265 lineto 373.708524 8.500295 lineto 374.291722 8.308523 lineto 374.874883 8.111526 lineto 375.458082 7.908857 lineto 376.041280 7.700031 lineto 376.624478 7.484531 lineto 377.207714 7.261802 lineto 377.790912 7.031249 lineto 378.374147 6.792236 lineto 378.957420 6.544083 lineto 379.540655 6.286060 lineto 380.123928 6.017388 lineto 380.707200 5.737237 lineto 381.290473 5.444716 lineto 381.873782 5.138879 lineto 382.457092 4.818712 lineto 383.040402 4.483135 lineto 383.623748 4.130998 lineto 384.207058 3.761074 lineto 384.790442 3.372056 lineto 385.373788 2.962552 lineto 385.957172 2.531080 lineto 386.540556 2.076065 lineto 387.123977 1.595828 lineto 387.707398 1.088588 lineto 388.290819 0.552449 lineto 388.874276 -0.014603 lineto stroke 1 setlinewidth 0 setgray 38.888889 0.000000 3.000000 0.000000 360.000000 arc fill 388.874276 -0.014603 3.000000 0.000000 360.000000 arc fill 0.0 setgray 0.5 setlinewidth newpath 38.888889 0.000000 moveto 38.888889 0.000000 lineto 58.349693 19.460807 lineto 77.795459 0.017681 lineto 97.224967 38.891633 lineto 116.651952 -0.014716 lineto 136.092465 58.314688 lineto 155.550122 -0.005433 lineto 175.012777 77.790554 lineto 194.463674 0.019238 lineto 213.896900 97.230233 lineto 233.322763 -0.010578 lineto 252.758325 77.758335 lineto 272.211782 -0.010433 lineto 291.674844 58.341502 lineto 311.130359 0.019262 lineto 330.568202 38.901536 lineto 349.994400 -0.005598 lineto 369.425752 19.425750 lineto 388.874276 -0.014603 lineto stroke 0.0 setgray 58.349693 19.460807 3.000000 0.000000 360.000000 arc stroke 77.795459 0.017681 3.000000 0.000000 360.000000 arc stroke 97.224967 38.891633 3.000000 0.000000 360.000000 arc stroke 116.651952 -0.014716 3.000000 0.000000 360.000000 arc stroke 136.092465 58.314688 3.000000 0.000000 360.000000 arc stroke 155.550122 -0.005433 3.000000 0.000000 360.000000 arc stroke 175.012777 77.790554 3.000000 0.000000 360.000000 arc stroke 194.463674 0.019238 3.000000 0.000000 360.000000 arc stroke 213.896900 97.230233 3.000000 0.000000 360.000000 arc stroke 233.322763 -0.010578 3.000000 0.000000 360.000000 arc stroke 252.758325 77.758335 3.000000 0.000000 360.000000 arc stroke 272.211782 -0.010433 3.000000 0.000000 360.000000 arc stroke 291.674844 58.341502 3.000000 0.000000 360.000000 arc stroke 311.130359 0.019262 3.000000 0.000000 360.000000 arc stroke 330.568202 38.901536 3.000000 0.000000 360.000000 arc stroke 349.994400 -0.005598 3.000000 0.000000 360.000000 arc stroke 369.425752 19.425750 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 58.349693 19.460807 2.800000 0.000000 360.000000 arc fill 77.795459 0.017681 2.800000 0.000000 360.000000 arc fill 97.224967 38.891633 2.800000 0.000000 360.000000 arc fill 116.651952 -0.014716 2.800000 0.000000 360.000000 arc fill 136.092465 58.314688 2.800000 0.000000 360.000000 arc fill 155.550122 -0.005433 2.800000 0.000000 360.000000 arc fill 175.012777 77.790554 2.800000 0.000000 360.000000 arc fill 194.463674 0.019238 2.800000 0.000000 360.000000 arc fill 213.896900 97.230233 2.800000 0.000000 360.000000 arc fill 233.322763 -0.010578 2.800000 0.000000 360.000000 arc fill 252.758325 77.758335 2.800000 0.000000 360.000000 arc fill 272.211782 -0.010433 2.800000 0.000000 360.000000 arc fill 291.674844 58.341502 2.800000 0.000000 360.000000 arc fill 311.130359 0.019262 2.800000 0.000000 360.000000 arc fill 330.568202 38.901536 2.800000 0.000000 360.000000 arc fill 349.994400 -0.005598 2.800000 0.000000 360.000000 arc fill 369.425752 19.425750 2.800000 0.000000 360.000000 arc fill 0.7 setgray 1.5 setlinewidth newpath 38.888889 0.000000 moveto 39.472982 0.567925 lineto 40.057061 1.104911 lineto 40.641126 1.612972 lineto 41.225182 2.094004 lineto 41.809224 2.549789 lineto 42.393257 2.982006 lineto 42.977276 3.392230 lineto 43.561286 3.781945 lineto 44.145281 4.152540 lineto 44.729268 4.505325 lineto 45.313240 4.841526 lineto 45.897199 5.162295 lineto 46.481148 5.468711 lineto 47.065088 5.761788 lineto 47.649015 6.042474 lineto 48.232932 6.311658 lineto 48.816835 6.570172 lineto 49.400728 6.818796 lineto 49.984613 7.058259 lineto 50.568483 7.289241 lineto 51.152340 7.512380 lineto 51.736192 7.728270 lineto 52.320030 7.937467 lineto 52.903859 8.140490 lineto 53.487674 8.337822 lineto 54.071484 8.529912 lineto 54.655280 8.717182 lineto 55.239067 8.900021 lineto 55.822845 9.078793 lineto 56.406614 9.253837 lineto 56.990373 9.425467 lineto 57.574119 9.593974 lineto 58.157859 9.759628 lineto 58.741591 9.922684 lineto 59.325313 10.083369 lineto 59.909026 10.241904 lineto 60.492729 10.398485 lineto 61.076424 10.553297 lineto 61.660114 10.706510 lineto 62.243794 10.858281 lineto 62.827465 11.008756 lineto 63.411127 11.158068 lineto 63.994784 11.306338 lineto 64.578433 11.453682 lineto 65.162076 11.600200 lineto 65.745710 11.745988 lineto 66.329335 11.891134 lineto 66.912960 12.035716 lineto 67.496575 12.179809 lineto 68.080182 12.323476 lineto 68.663783 12.466780 lineto 69.247380 12.609774 lineto 69.830973 12.752509 lineto 70.414556 12.895029 lineto 70.998139 13.037374 lineto 71.581713 13.179582 lineto 72.165282 13.321686 lineto 72.748846 13.463714 lineto 73.332411 13.605694 lineto 73.915966 13.747648 lineto 74.499517 13.889599 lineto 75.083068 14.031562 lineto 75.666614 14.173555 lineto 76.250155 14.315594 lineto 76.833692 14.457688 lineto 77.417224 14.599850 lineto 78.000756 14.742087 lineto 78.584288 14.884408 lineto 79.167811 15.026820 lineto 79.751334 15.169327 lineto 80.334857 15.311933 lineto 80.918380 15.454642 lineto 81.501893 15.597456 lineto 82.085416 15.740377 lineto 82.668930 15.883406 lineto 83.252443 16.026542 lineto 83.835948 16.169787 lineto 84.419461 16.313139 lineto 85.002975 16.456597 lineto 85.586479 16.600160 lineto 86.169993 16.743826 lineto 86.753497 16.887593 lineto 87.337010 17.031459 lineto 87.920515 17.175420 lineto 88.504019 17.319476 lineto 89.087533 17.463623 lineto 89.671037 17.607858 lineto 90.254551 17.752177 lineto 90.838055 17.896579 lineto 91.421568 18.041060 lineto 92.005082 18.185616 lineto 92.588596 18.330245 lineto 93.172109 18.474943 lineto 93.755623 18.619708 lineto 94.339146 18.764536 lineto 94.922659 18.909424 lineto 95.506182 19.054368 lineto 96.089705 19.199366 lineto 96.673228 19.344415 lineto 97.256751 19.489510 lineto 97.840283 19.634651 lineto 98.423815 19.779834 lineto 99.007347 19.925055 lineto 99.590888 20.070312 lineto 100.174420 20.215601 lineto 100.757962 20.360921 lineto 101.341512 20.506269 lineto 101.925054 20.651642 lineto 102.508605 20.797033 lineto 103.092164 20.942448 lineto 103.675715 21.087877 lineto 104.259275 21.233320 lineto 104.842844 21.378774 lineto 105.426404 21.524237 lineto 106.009973 21.669705 lineto 106.593552 21.815178 lineto 107.177130 21.960651 lineto 107.760709 22.106124 lineto 108.344297 22.251592 lineto 108.927884 22.397051 lineto 109.511472 22.542502 lineto 110.095069 22.687940 lineto 110.678675 22.833365 lineto 111.262272 22.978770 lineto 111.845879 23.124155 lineto 112.429494 23.269516 lineto 113.013110 23.414855 lineto 113.596735 23.560163 lineto 114.180360 23.705438 lineto 114.763984 23.850679 lineto 115.347619 23.995883 lineto 115.931253 24.141045 lineto 116.514896 24.286164 lineto 117.098539 24.431235 lineto 117.682183 24.576256 lineto 118.265845 24.721223 lineto 118.849497 24.866133 lineto 119.433159 25.010982 lineto 120.016830 25.155766 lineto 120.600492 25.300481 lineto 121.184173 25.445124 lineto 121.767853 25.589693 lineto 122.351534 25.734178 lineto 122.935214 25.878580 lineto 123.518913 26.022894 lineto 124.102603 26.167113 lineto 124.686302 26.311234 lineto 125.270010 26.455253 lineto 125.853719 26.599164 lineto 126.437427 26.742963 lineto 127.021144 26.886644 lineto 127.604862 27.030204 lineto 128.188580 27.173635 lineto 128.772306 27.316931 lineto 129.356043 27.460088 lineto 129.939779 27.603102 lineto 130.523515 27.745962 lineto 131.107260 27.888667 lineto 131.691005 28.031205 lineto 132.274751 28.173577 lineto 132.858506 28.315772 lineto 133.442260 28.457782 lineto 134.026024 28.599601 lineto 134.609788 28.741224 lineto 135.193552 28.882643 lineto 135.777325 29.023848 lineto 136.361089 29.164835 lineto 136.944871 29.305594 lineto 137.528645 29.446117 lineto 138.112427 29.586398 lineto 138.696219 29.726426 lineto 139.280001 29.866194 lineto 139.863793 30.005691 lineto 140.447585 30.144912 lineto 141.031386 30.283846 lineto 141.615187 30.422483 lineto 142.198988 30.560817 lineto 142.782789 30.698833 lineto 143.366599 30.836526 lineto 143.950400 30.973884 lineto 144.534210 31.110896 lineto 145.118030 31.247554 lineto 145.701840 31.383847 lineto 146.285660 31.519763 lineto 146.869479 31.655292 lineto 147.453299 31.790424 lineto 148.037118 31.925146 lineto 148.620947 32.059449 lineto 149.204776 32.193320 lineto 149.788596 32.326746 lineto 150.372424 32.459718 lineto 150.956262 32.592222 lineto 151.540091 32.724246 lineto 152.123920 32.855779 lineto 152.707758 32.986808 lineto 153.291587 33.117318 lineto 153.875425 33.247300 lineto 154.459263 33.376740 lineto 155.043101 33.505625 lineto 155.626949 33.633938 lineto 156.210777 33.761672 lineto 156.794625 33.888807 lineto 157.378454 34.015335 lineto 157.962301 34.141237 lineto 158.546148 34.266504 lineto 159.129977 34.391118 lineto 159.713825 34.515068 lineto 160.297672 34.638337 lineto 160.881501 34.760913 lineto 161.465348 34.882780 lineto 162.049196 35.003923 lineto 162.633024 35.124330 lineto 163.216872 35.243983 lineto 163.800701 35.362869 lineto 164.384548 35.480971 lineto 164.968395 35.598276 lineto 165.552224 35.714769 lineto 166.136071 35.830433 lineto 166.719900 35.945253 lineto 167.303748 36.059216 lineto 167.887576 36.172307 lineto 168.471405 36.284505 lineto 169.055253 36.395799 lineto 169.639081 36.506174 lineto 170.222910 36.615614 lineto 170.806739 36.724099 lineto 171.390568 36.831620 lineto 171.974397 36.938158 lineto 172.558226 37.043699 lineto 173.142054 37.148225 lineto 173.725883 37.251722 lineto 174.309712 37.354176 lineto 174.893522 37.455568 lineto 175.477351 37.555884 lineto 176.061161 37.655109 lineto 176.644990 37.753228 lineto 177.228800 37.850226 lineto 177.812611 37.946087 lineto 178.396421 38.040794 lineto 178.980231 38.134333 lineto 179.564042 38.226692 lineto 180.147852 38.317851 lineto 180.731662 38.407799 lineto 181.315454 38.496519 lineto 181.899264 38.583996 lineto 182.483056 38.670217 lineto 183.066848 38.755168 lineto 183.650658 38.838833 lineto 184.234450 38.921197 lineto 184.818223 39.002251 lineto 185.402015 39.081975 lineto 185.985806 39.160354 lineto 186.569598 39.237385 lineto 187.153371 39.313043 lineto 187.737144 39.387319 lineto 188.320936 39.460205 lineto 188.904709 39.531682 lineto 189.488482 39.601735 lineto 190.072237 39.670361 lineto 190.656010 39.737540 lineto 191.239783 39.803259 lineto 191.823538 39.867512 lineto 192.407311 39.930283 lineto 192.991066 39.991565 lineto 193.574821 40.051345 lineto 194.158575 40.109609 lineto 194.742330 40.166348 lineto 195.326066 40.221553 lineto 195.909821 40.275213 lineto 196.493575 40.327321 lineto 197.077311 40.377867 lineto 197.661048 40.426836 lineto 198.244784 40.474224 lineto 198.828520 40.520022 lineto 199.412256 40.564221 lineto 199.995992 40.606811 lineto 200.579709 40.647788 lineto 201.163446 40.687142 lineto 201.747163 40.724870 lineto 202.330899 40.760960 lineto 202.914617 40.795410 lineto 203.498334 40.828204 lineto 204.082052 40.859353 lineto 204.665769 40.888837 lineto 205.249468 40.916657 lineto 205.833186 40.942804 lineto 206.416885 40.967282 lineto 207.000603 40.990081 lineto 207.584302 41.011198 lineto 208.168001 41.030627 lineto 208.751700 41.048373 lineto 209.335399 41.064427 lineto 209.919098 41.078785 lineto 210.502797 41.091450 lineto 211.086477 41.102423 lineto 211.670176 41.111695 lineto 212.253875 41.119266 lineto 212.837556 41.125144 lineto 213.421236 41.129321 lineto 214.004917 41.131801 lineto 214.588616 41.132585 lineto 215.172296 41.131671 lineto 215.755977 41.129061 lineto 216.339657 41.124759 lineto 216.923319 41.118770 lineto 217.506999 41.111092 lineto 218.090680 41.101728 lineto 218.674360 41.090685 lineto 219.258022 41.077964 lineto 219.841703 41.063565 lineto 220.425365 41.047502 lineto 221.009027 41.029774 lineto 221.592707 41.010391 lineto 222.176369 40.989353 lineto 222.760031 40.966665 lineto 223.343711 40.942340 lineto 223.927373 40.916384 lineto 224.511035 40.888800 lineto 225.094697 40.859594 lineto 225.678359 40.828779 lineto 226.262021 40.796365 lineto 226.845683 40.762356 lineto 227.429345 40.726756 lineto 228.013007 40.689586 lineto 228.596669 40.650853 lineto 229.180312 40.610557 lineto 229.763974 40.568718 lineto 230.347636 40.525344 lineto 230.931298 40.480450 lineto 231.514960 40.434040 lineto 232.098603 40.386128 lineto 232.682265 40.336732 lineto 233.265927 40.285858 lineto 233.849589 40.233518 lineto 234.433251 40.179727 lineto 235.016894 40.124500 lineto 235.600556 40.067849 lineto 236.184218 40.009789 lineto 236.767880 39.950333 lineto 237.351524 39.889496 lineto 237.935185 39.827291 lineto 238.518847 39.763737 lineto 239.102509 39.698844 lineto 239.686171 39.632634 lineto 240.269815 39.565116 lineto 240.853477 39.496310 lineto 241.437138 39.426233 lineto 242.020800 39.354901 lineto 242.604462 39.282330 lineto 243.188124 39.208540 lineto 243.771786 39.133545 lineto 244.355448 39.057358 lineto 244.939110 38.980008 lineto 245.522772 38.901508 lineto 246.106434 38.821877 lineto 246.690096 38.741131 lineto 247.273776 38.659288 lineto 247.857438 38.576372 lineto 248.441100 38.492400 lineto 249.024762 38.407391 lineto 249.608443 38.321362 lineto 250.192104 38.234337 lineto 250.775766 38.146336 lineto 251.359447 38.057375 lineto 251.943109 37.967477 lineto 252.526789 37.876664 lineto 253.110451 37.784954 lineto 253.694132 37.692368 lineto 254.277812 37.598929 lineto 254.861474 37.504657 lineto 255.445155 37.409575 lineto 256.028835 37.313702 lineto 256.612515 37.217061 lineto 257.196196 37.119672 lineto 257.779858 37.021560 lineto 258.363538 36.922748 lineto 258.947219 36.823254 lineto 259.530899 36.723102 lineto 260.114580 36.622317 lineto 260.698279 36.520918 lineto 261.281959 36.418933 lineto 261.865640 36.316379 lineto 262.449320 36.213283 lineto 263.033001 36.109668 lineto 263.616681 36.005557 lineto 264.200380 35.900973 lineto 264.784061 35.795942 lineto 265.367741 35.690484 lineto 265.951440 35.584625 lineto 266.535121 35.478391 lineto 267.118801 35.371802 lineto 267.702500 35.264888 lineto 268.286180 35.157669 lineto 268.869880 35.050171 lineto 269.453560 34.942421 lineto 270.037240 34.834441 lineto 270.620939 34.726257 lineto 271.204620 34.617898 lineto 271.788319 34.509382 lineto 272.371999 34.400742 lineto 272.955698 34.292000 lineto 273.539379 34.183183 lineto 274.123078 34.074318 lineto 274.706758 33.965429 lineto 275.290439 33.856546 lineto 275.874138 33.747692 lineto 276.457818 33.638896 lineto 277.041499 33.530186 lineto 277.625198 33.421588 lineto 278.208878 33.313128 lineto 278.792559 33.204838 lineto 279.376239 33.096742 lineto 279.959920 32.988871 lineto 280.543600 32.881251 lineto 281.127281 32.773913 lineto 281.710961 32.666886 lineto 282.294642 32.560197 lineto 282.878322 32.453877 lineto 283.461984 32.347956 lineto 284.045664 32.242465 lineto 284.629326 32.137432 lineto 285.213007 32.032889 lineto 285.796669 31.928869 lineto 286.380331 31.825402 lineto 286.964011 31.722517 lineto 287.547673 31.620251 lineto 288.131317 31.518632 lineto 288.714978 31.417696 lineto 289.298640 31.317477 lineto 289.882284 31.218004 lineto 290.465946 31.119317 lineto 291.049589 31.021448 lineto 291.633232 30.924432 lineto 292.216876 30.828304 lineto 292.800501 30.733101 lineto 293.384144 30.638860 lineto 293.967769 30.545615 lineto 294.551394 30.453407 lineto 295.135019 30.362274 lineto 295.718643 30.272254 lineto 296.302268 30.183386 lineto 296.885875 30.095711 lineto 297.469481 30.009268 lineto 298.053087 29.924099 lineto 298.636693 29.840247 lineto 299.220281 29.757753 lineto 299.803887 29.676662 lineto 300.387475 29.597014 lineto 300.971044 29.518860 lineto 301.554632 29.442239 lineto 302.138201 29.367205 lineto 302.721771 29.293797 lineto 303.305321 29.222071 lineto 303.888872 29.152068 lineto 304.472423 29.083844 lineto 305.055973 29.017446 lineto 305.639505 28.952928 lineto 306.223038 28.890343 lineto 306.806570 28.829740 lineto 307.390083 28.771179 lineto 307.973597 28.714716 lineto 308.557110 28.660401 lineto 309.140605 28.608298 lineto 309.724100 28.558467 lineto 310.307577 28.510963 lineto 310.891072 28.465850 lineto 311.474530 28.423191 lineto 312.057988 28.383051 lineto 312.641446 28.345490 lineto 313.224904 28.310580 lineto 313.808325 28.278388 lineto 314.391783 28.248980 lineto 314.975203 28.222430 lineto 315.558587 28.198808 lineto 316.142008 28.178187 lineto 316.725392 28.160645 lineto 317.308776 28.146257 lineto 317.892159 28.135101 lineto 318.475543 28.127257 lineto 319.058890 28.122807 lineto 319.642236 28.121835 lineto 320.225583 28.124424 lineto 320.808893 28.130662 lineto 321.392202 28.140636 lineto 321.975512 28.154440 lineto 322.558822 28.172163 lineto 323.142094 28.193901 lineto 323.725367 28.219751 lineto 324.308639 28.249810 lineto 324.891875 28.284178 lineto 325.475110 28.322962 lineto 326.058345 28.366262 lineto 326.641544 28.414186 lineto 327.224742 28.466845 lineto 327.807940 28.524349 lineto 328.391102 28.586811 lineto 328.974263 28.654351 lineto 329.557424 28.727084 lineto 330.140548 28.805135 lineto 330.723672 28.888625 lineto 331.306797 28.977681 lineto 331.889884 29.072435 lineto 332.472934 29.173013 lineto 333.056021 29.279556 lineto 333.639034 29.392197 lineto 334.222084 29.511078 lineto 334.805097 29.636341 lineto 335.388072 29.768133 lineto 335.971048 29.906601 lineto 336.554024 30.051900 lineto 337.136963 30.204183 lineto 337.719901 30.363609 lineto 338.302803 30.530338 lineto 338.885705 30.704537 lineto 339.468569 30.886372 lineto 340.051434 31.076015 lineto 340.634261 31.273640 lineto 341.217089 31.479424 lineto 341.799879 31.693550 lineto 342.382632 31.916201 lineto 342.965386 32.147566 lineto 343.548139 32.387836 lineto 344.130818 32.637207 lineto 344.713534 32.895877 lineto 345.296176 33.164046 lineto 345.878818 33.441925 lineto 346.461423 33.729721 lineto 347.044028 34.027643 lineto 347.626596 34.335916 lineto 348.209127 34.654751 lineto 348.791658 34.984378 lineto 349.374151 35.325023 lineto 349.956608 35.676917 lineto 350.539027 36.040292 lineto 351.121447 36.415389 lineto 351.703829 36.802448 lineto 352.286175 37.201717 lineto 352.868483 37.613437 lineto 353.450754 38.037867 lineto 354.033025 38.475256 lineto 354.615222 38.925865 lineto 355.197419 39.389953 lineto 355.779579 39.867781 lineto 356.361702 40.359620 lineto 356.943787 40.865737 lineto 357.525836 41.386401 lineto 358.107848 41.921886 lineto 358.689785 42.472471 lineto 359.271722 43.038424 lineto 359.853623 43.620032 lineto 360.435486 44.217574 lineto 361.017275 44.831323 lineto 361.599027 45.461567 lineto 362.180742 46.108583 lineto 362.762419 46.772655 lineto 363.344060 47.454060 lineto 363.925627 48.153083 lineto 364.507156 48.869995 lineto 365.088611 49.605075 lineto 365.670029 50.358601 lineto 366.251410 51.130834 lineto 366.832717 51.922046 lineto 367.413987 52.732501 lineto 367.995183 53.562446 lineto 368.576304 54.412140 lineto 369.157388 55.281825 lineto 369.738399 56.171730 lineto 370.319335 57.082090 lineto 370.900234 58.013117 lineto 371.481058 58.965019 lineto 372.061772 59.937986 lineto 372.642448 60.932196 lineto 373.223050 61.947823 lineto 373.803578 62.985008 lineto 374.384032 64.043888 lineto 374.964375 65.124567 lineto 375.544643 66.227141 lineto 376.124838 67.351680 lineto 376.704958 68.498221 lineto 377.284967 69.666782 lineto 377.864901 70.857351 lineto 378.444725 72.069884 lineto 379.024437 73.304299 lineto 379.604075 74.560484 lineto 380.183601 75.838286 lineto 380.763017 77.137502 lineto 381.342321 78.457895 lineto 381.921514 79.799177 lineto 382.500596 81.161005 lineto 383.079529 82.542990 lineto 383.658388 83.944660 lineto 384.237099 85.365494 lineto 384.815661 86.804928 lineto 385.394112 88.262275 lineto 385.972415 89.736821 lineto 386.550570 91.227731 lineto 387.128576 92.734117 lineto 387.706470 94.254967 lineto 388.284180 95.789195 lineto 388.861741 97.335598 lineto stroke 0 setgray 3.5 setlinewidth 20 -100 translate newpath 17.500000 0.000000 moveto 18.083817 0.009448 lineto 18.667619 0.035762 lineto 19.251409 0.077459 lineto 19.835182 0.133164 lineto 20.418942 0.201606 lineto 21.002688 0.281609 lineto 21.586419 0.372086 lineto 22.170136 0.472036 lineto 22.753838 0.580534 lineto 23.337525 0.696727 lineto 23.921200 0.819832 lineto 24.504860 0.949128 lineto 25.088508 1.083951 lineto 25.672139 1.223694 lineto 26.255760 1.367798 lineto 26.839364 1.515755 lineto 27.422955 1.667097 lineto 28.006534 1.821398 lineto 28.590101 1.978270 lineto 29.173653 2.137358 lineto 29.757192 2.298341 lineto 30.340719 2.460928 lineto 30.924233 2.624853 lineto 31.507733 2.789879 lineto 32.091222 2.955789 lineto 32.674699 3.122391 lineto 33.258165 3.289509 lineto 33.841619 3.456989 lineto 34.425060 3.624692 lineto 35.008491 3.792494 lineto 35.591911 3.960285 lineto 36.175319 4.127970 lineto 36.758718 4.295465 lineto 37.342106 4.462695 lineto 37.925480 4.629597 lineto 38.508846 4.796116 lineto 39.092204 4.962205 lineto 39.675553 5.127825 lineto 40.258890 5.292943 lineto 40.842219 5.457534 lineto 41.425539 5.621575 lineto 42.008851 5.785051 lineto 42.592155 5.947951 lineto 43.175450 6.110265 lineto 43.758737 6.271990 lineto 44.342015 6.433125 lineto 44.925286 6.593670 lineto 45.508552 6.753631 lineto 46.091809 6.913013 lineto 46.675059 7.071824 lineto 47.258304 7.230073 lineto 47.841541 7.387772 lineto 48.424773 7.544932 lineto 49.007998 7.701567 lineto 49.591218 7.857689 lineto 50.174434 8.013314 lineto 50.757645 8.168457 lineto 51.340849 8.323133 lineto 51.924052 8.477357 lineto 52.507247 8.631145 lineto 53.090438 8.784512 lineto 53.673629 8.937475 lineto 54.256812 9.090050 lineto 54.839994 9.242252 lineto 55.423173 9.394095 lineto 56.006347 9.545598 lineto 56.589517 9.696772 lineto 57.172687 9.847632 lineto 57.755853 9.998196 lineto 58.339019 10.148474 lineto 58.922185 10.298480 lineto 59.505346 10.448228 lineto 60.088504 10.597732 lineto 60.671661 10.747002 lineto 61.254819 10.896051 lineto 61.837977 11.044890 lineto 62.421134 11.193532 lineto 63.004287 11.341984 lineto 63.587445 11.490259 lineto 64.170598 11.638366 lineto 64.753752 11.786315 lineto 65.336909 11.934113 lineto 65.920063 12.081771 lineto 66.503220 12.229295 lineto 67.086374 12.376693 lineto 67.669531 12.523974 lineto 68.252689 12.671144 lineto 68.835850 12.818210 lineto 69.419012 12.965177 lineto 70.002170 13.112052 lineto 70.585335 13.258842 lineto 71.168501 13.405550 lineto 71.751667 13.552181 lineto 72.334841 13.698743 lineto 72.918007 13.845236 lineto 73.501182 13.991667 lineto 74.084356 14.138039 lineto 74.667538 14.284356 lineto 75.250713 14.430621 lineto 75.833895 14.576838 lineto 76.417086 14.723008 lineto 77.000277 14.869135 lineto 77.583468 15.015223 lineto 78.166659 15.161271 lineto 78.749858 15.307284 lineto 79.333057 15.453262 lineto 79.916257 15.599208 lineto 80.499464 15.745121 lineto 81.082680 15.891006 lineto 81.665888 16.036863 lineto 82.249104 16.182691 lineto 82.832328 16.328492 lineto 83.415552 16.474268 lineto 83.998777 16.620019 lineto 84.582009 16.765745 lineto 85.165242 16.911446 lineto 85.748483 17.057122 lineto 86.331724 17.202774 lineto 86.914973 17.348402 lineto 87.498214 17.494003 lineto 88.081472 17.639581 lineto 88.664730 17.785133 lineto 89.247987 17.930657 lineto 89.831253 18.076156 lineto 90.414519 18.221624 lineto 90.997794 18.367065 lineto 91.581068 18.512477 lineto 92.164342 18.657856 lineto 92.747625 18.803203 lineto 93.330916 18.948514 lineto 93.914207 19.093791 lineto 94.497498 19.239031 lineto 95.080798 19.384230 lineto 95.664097 19.529388 lineto 96.247405 19.674503 lineto 96.830713 19.819571 lineto 97.414020 19.964592 lineto 97.997336 20.109562 lineto 98.580652 20.254479 lineto 99.163977 20.399340 lineto 99.747301 20.544143 lineto 100.330626 20.688883 lineto 100.913959 20.833561 lineto 101.497291 20.978167 lineto 102.080632 21.122703 lineto 102.663974 21.267163 lineto 103.247315 21.411544 lineto 103.830664 21.555844 lineto 104.414014 21.700056 lineto 104.997363 21.844177 lineto 105.580721 21.988204 lineto 106.164079 22.132128 lineto 106.747437 22.275950 lineto 107.330803 22.419662 lineto 107.914169 22.563260 lineto 108.497535 22.706738 lineto 109.080901 22.850093 lineto 109.664276 22.993319 lineto 110.247650 23.136407 lineto 110.831025 23.279352 lineto 111.414407 23.422152 lineto 111.997782 23.564798 lineto 112.581165 23.707285 lineto 113.164548 23.849603 lineto 113.747939 23.991750 lineto 114.331322 24.133715 lineto 114.914713 24.275495 lineto 115.498104 24.417079 lineto 116.081495 24.558460 lineto 116.664886 24.699633 lineto 117.248278 24.840589 lineto 117.831677 24.981317 lineto 118.415068 25.121812 lineto 118.998468 25.262064 lineto 119.581867 25.402067 lineto 120.165267 25.541808 lineto 120.748667 25.681283 lineto 121.332066 25.820476 lineto 121.915466 25.959383 lineto 122.498865 26.097994 lineto 123.082265 26.236296 lineto 123.665673 26.374281 lineto 124.249072 26.511939 lineto 124.832472 26.649256 lineto 125.415879 26.786227 lineto 125.999279 26.922837 lineto 126.582679 27.059076 lineto 127.166086 27.194934 lineto 127.749486 27.330396 lineto 128.332886 27.465455 lineto 128.916285 27.600093 lineto 129.499685 27.734305 lineto 130.083084 27.868074 lineto 130.666484 28.001388 lineto 131.249883 28.134232 lineto 131.833283 28.266599 lineto 132.416682 28.398472 lineto 133.000082 28.529840 lineto 133.583473 28.660686 lineto 134.166873 28.790998 lineto 134.750264 28.920764 lineto 135.333655 29.049966 lineto 135.917046 29.178595 lineto 136.500437 29.306631 lineto 137.083828 29.434064 lineto 137.667211 29.560876 lineto 138.250602 29.687055 lineto 138.833985 29.812584 lineto 139.417368 29.937447 lineto 140.000751 30.061632 lineto 140.584142 30.185120 lineto 141.167517 30.307897 lineto 141.750891 30.429948 lineto 142.334266 30.551256 lineto 142.917640 30.671805 lineto 143.501015 30.791578 lineto 144.084389 30.910562 lineto 144.667764 31.028737 lineto 145.251122 31.146088 lineto 145.834496 31.262600 lineto 146.417854 31.378253 lineto 147.001228 31.493033 lineto 147.584586 31.606923 lineto 148.167944 31.719904 lineto 148.751302 31.831962 lineto 149.334660 31.943077 lineto 149.918017 32.053235 lineto 150.501359 32.162416 lineto 151.084716 32.270605 lineto 151.668057 32.377783 lineto 152.251415 32.483936 lineto 152.834756 32.589043 lineto 153.418097 32.693090 lineto 154.001439 32.796057 lineto 154.584780 32.897930 lineto 155.168121 32.998688 lineto 155.751445 33.098317 lineto 156.334786 33.196800 lineto 156.918111 33.294118 lineto 157.501452 33.390254 lineto 158.084776 33.485191 lineto 158.668101 33.578916 lineto 159.251425 33.671407 lineto 159.834750 33.762651 lineto 160.418074 33.852627 lineto 161.001382 33.941325 lineto 161.584706 34.028722 lineto 162.168031 34.114806 lineto 162.751338 34.199560 lineto 163.334646 34.282967 lineto 163.917971 34.365010 lineto 164.501278 34.445677 lineto 165.084586 34.524949 lineto 165.667894 34.602811 lineto 166.251202 34.679250 lineto 166.834509 34.754250 lineto 167.417800 34.827794 lineto 168.001108 34.899868 lineto 168.584416 34.970462 lineto 169.167707 35.039554 lineto 169.751015 35.107137 lineto 170.334306 35.173197 lineto 170.917597 35.237714 lineto 171.500905 35.300679 lineto 172.084196 35.362079 lineto 172.667487 35.421901 lineto 173.250778 35.480134 lineto 173.834069 35.536761 lineto 174.417360 35.591778 lineto 175.000651 35.645167 lineto 175.583942 35.696916 lineto 176.167233 35.747017 lineto 176.750524 35.795458 lineto 177.333815 35.842230 lineto 177.917089 35.887324 lineto 178.500381 35.930725 lineto 179.083672 35.972427 lineto 179.666963 36.012423 lineto 180.250237 36.050700 lineto 180.833528 36.087254 lineto 181.416819 36.122072 lineto 182.000110 36.155150 lineto 182.583385 36.186480 lineto 183.166676 36.216058 lineto 183.749967 36.243870 lineto 184.333241 36.269914 lineto 184.916532 36.294184 lineto 185.499823 36.316677 lineto 186.083114 36.337389 lineto 186.666389 36.356306 lineto 187.249680 36.373433 lineto 187.832971 36.388763 lineto 188.416262 36.402293 lineto 188.999553 36.414022 lineto 189.582844 36.423939 lineto 190.166135 36.432055 lineto 190.749426 36.438359 lineto 191.332717 36.442848 lineto 191.916008 36.445531 lineto 192.499299 36.446395 lineto 193.082590 36.445452 lineto 193.665898 36.442694 lineto 194.249189 36.438121 lineto 194.832480 36.431742 lineto 195.415788 36.423551 lineto 195.999079 36.413555 lineto 196.582386 36.401751 lineto 197.165678 36.388145 lineto 197.748985 36.372737 lineto 198.332293 36.355538 lineto 198.915601 36.336542 lineto 199.498909 36.315764 lineto 200.082216 36.293200 lineto 200.665524 36.268854 lineto 201.248832 36.242740 lineto 201.832139 36.214860 lineto 202.415464 36.185220 lineto 202.998772 36.153823 lineto 203.582096 36.120682 lineto 204.165404 36.085802 lineto 204.748728 36.049185 lineto 205.332053 36.010850 lineto 205.915377 35.970800 lineto 206.498702 35.929039 lineto 207.082026 35.885584 lineto 207.665350 35.840444 lineto 208.248692 35.793622 lineto 208.832016 35.745131 lineto 209.415340 35.694988 lineto 209.998682 35.643193 lineto 210.582023 35.589767 lineto 211.165364 35.534713 lineto 211.748688 35.478052 lineto 212.332029 35.419786 lineto 212.915387 35.359934 lineto 213.498728 35.298505 lineto 214.082069 35.235515 lineto 214.665411 35.170974 lineto 215.248768 35.104896 lineto 215.832126 35.037296 lineto 216.415467 34.968190 lineto 216.998825 34.897586 lineto 217.582183 34.825501 lineto 218.165541 34.751951 lineto 218.748899 34.676949 lineto 219.332256 34.600510 lineto 219.915614 34.522651 lineto 220.498989 34.443385 lineto 221.082346 34.362727 lineto 221.665721 34.280695 lineto 222.249079 34.197303 lineto 222.832453 34.112567 lineto 223.415828 34.026503 lineto 223.999202 33.939128 lineto 224.582560 33.850458 lineto 225.165935 33.760509 lineto 225.749309 33.669297 lineto 226.332700 33.576841 lineto 226.916075 33.483155 lineto 227.499449 33.388258 lineto 228.082824 33.292165 lineto 228.666215 33.194894 lineto 229.249589 33.096460 lineto 229.832981 32.996883 lineto 230.416355 32.896178 lineto 230.999746 32.794363 lineto 231.583121 32.691455 lineto 232.166512 32.587470 lineto 232.749903 32.482425 lineto 233.333294 32.376342 lineto 233.916669 32.269232 lineto 234.500060 32.161115 lineto 235.083451 32.052006 lineto 235.666842 31.941926 lineto 236.250234 31.830887 lineto 236.833625 31.718911 lineto 237.416999 31.606012 lineto 238.000391 31.492205 lineto 238.583782 31.377512 lineto 239.167173 31.261945 lineto 239.750564 31.145525 lineto 240.333955 31.028264 lineto 240.917346 30.910181 lineto 241.500738 30.791292 lineto 242.084129 30.671613 lineto 242.667503 30.551160 lineto 243.250895 30.429950 lineto 243.834286 30.307997 lineto 244.417677 30.185320 lineto 245.001051 30.061932 lineto 245.584443 29.937849 lineto 246.167834 29.813086 lineto 246.751208 29.687660 lineto 247.334599 29.561585 lineto 247.917974 29.434876 lineto 248.501348 29.307547 lineto 249.084740 29.179613 lineto 249.668114 29.051088 lineto 250.251489 28.921988 lineto 250.834863 28.792327 lineto 251.418238 28.662117 lineto 252.001612 28.531373 lineto 252.584987 28.400108 lineto 253.168361 28.268335 lineto 253.751719 28.136068 lineto 254.335093 28.003322 lineto 254.918451 27.870106 lineto 255.501826 27.736435 lineto 256.085184 27.602319 lineto 256.668541 27.467772 lineto 257.251899 27.332808 lineto 257.835257 27.197435 lineto 258.418615 27.061667 lineto 259.001956 26.925516 lineto 259.585314 26.788989 lineto 260.168655 26.652104 lineto 260.751996 26.514863 lineto 261.335337 26.377285 lineto 261.918678 26.239375 lineto 262.502019 26.101146 lineto 263.085361 25.962606 lineto 263.668685 25.823768 lineto 264.252026 25.684635 lineto 264.835351 25.545225 lineto 265.418675 25.405540 lineto 266.001999 25.265594 lineto 266.585324 25.125391 lineto 267.168632 24.984945 lineto 267.751956 24.844258 lineto 268.335264 24.703344 lineto 268.918571 24.562209 lineto 269.501879 24.420859 lineto 270.085187 24.279304 lineto 270.668495 24.137550 lineto 271.251786 23.995603 lineto 271.835093 23.853473 lineto 272.418385 23.711165 lineto 273.001676 23.568687 lineto 273.584967 23.426043 lineto 274.168258 23.283243 lineto 274.751532 23.140289 lineto 275.334806 22.997189 lineto 275.918097 22.853948 lineto 276.501372 22.710573 lineto 277.084646 22.567068 lineto 277.667904 22.423440 lineto 278.251178 22.279691 lineto 278.834453 22.135829 lineto 279.417710 21.991856 lineto 280.000968 21.847780 lineto 280.584226 21.703601 lineto 281.167483 21.559328 lineto 281.750741 21.414962 lineto 282.333999 21.270509 lineto 282.917223 21.125970 lineto 283.500481 20.981353 lineto 284.083738 20.836656 lineto 284.666963 20.691887 lineto 285.250220 20.547049 lineto 285.833445 20.402142 lineto 286.416669 20.257173 lineto 286.999927 20.112140 lineto 287.583151 19.967052 lineto 288.166375 19.821907 lineto 288.749599 19.676708 lineto 289.332824 19.531459 lineto 289.916048 19.386160 lineto 290.499272 19.240817 lineto 291.082497 19.095428 lineto 291.665721 18.949998 lineto 292.248945 18.804525 lineto 292.832170 18.659016 lineto 293.415394 18.513468 lineto 293.998618 18.367883 lineto 294.581842 18.222265 lineto 295.165033 18.076613 lineto 295.748258 17.930930 lineto 296.331482 17.785216 lineto 296.914706 17.639470 lineto 297.497897 17.493695 lineto 298.081121 17.347891 lineto 298.664346 17.202058 lineto 299.247570 17.056197 lineto 299.830761 16.910309 lineto 300.413985 16.764393 lineto 300.997210 16.618449 lineto 301.580434 16.472477 lineto 302.163658 16.326477 lineto 302.746882 16.180450 lineto 303.330073 16.034393 lineto 303.913298 15.888306 lineto 304.496522 15.742189 lineto 305.079746 15.596040 lineto 305.662971 15.449858 lineto 306.246228 15.303643 lineto 306.829453 15.157393 lineto 307.412677 15.011105 lineto 307.995901 14.864778 lineto 308.579159 14.718410 lineto 309.162383 14.571999 lineto 309.745641 14.425542 lineto 310.328898 14.279037 lineto 310.912123 14.132480 lineto 311.495380 13.985870 lineto 312.078638 13.839200 lineto 312.661896 13.692470 lineto 313.245153 13.545675 lineto 313.828444 13.398809 lineto 314.411702 13.251870 lineto 314.994960 13.104852 lineto 315.578251 12.957750 lineto 316.161542 12.810560 lineto 316.744833 12.663275 lineto 317.328124 12.515889 lineto 317.911415 12.368395 lineto 318.494706 12.220788 lineto 319.078031 12.073060 lineto 319.661322 11.925203 lineto 320.244646 11.777211 lineto 320.827971 11.629073 lineto 321.411295 11.480784 lineto 321.994619 11.332331 lineto 322.577977 11.183707 lineto 323.161335 11.034902 lineto 323.744659 10.885905 lineto 324.328051 10.736706 lineto 324.911408 10.587293 lineto 325.494766 10.437654 lineto 326.078157 10.287779 lineto 326.661549 10.137654 lineto 327.244940 9.987267 lineto 327.828331 9.836604 lineto 328.411722 9.685651 lineto 328.995147 9.534396 lineto 329.578571 9.382823 lineto 330.161996 9.230918 lineto 330.745420 9.078666 lineto 331.328878 8.926052 lineto 331.912336 8.773060 lineto 332.495794 8.619677 lineto 333.079252 8.465884 lineto 333.662710 8.311668 lineto 334.246202 8.157013 lineto 334.829693 8.001903 lineto 335.413184 7.846323 lineto 335.996709 7.690260 lineto 336.580200 7.533698 lineto 337.163725 7.376624 lineto 337.747250 7.219026 lineto 338.330808 7.060892 lineto 338.914332 6.902210 lineto 339.497890 6.742973 lineto 340.081449 6.583171 lineto 340.665040 6.422801 lineto 341.248598 6.261856 lineto 341.832190 6.100337 lineto 342.415781 5.938245 lineto 342.999406 5.775584 lineto 343.582997 5.612362 lineto 344.166622 5.448592 lineto 344.750247 5.284289 lineto 345.333872 5.119475 lineto 345.917530 4.954176 lineto 346.501155 4.788426 lineto 347.084813 4.622263 lineto 347.668471 4.455734 lineto 348.252163 4.288895 lineto 348.835821 4.121809 lineto 349.419513 3.954549 lineto 350.003204 3.787201 lineto 350.586896 3.619861 lineto 351.170621 3.452638 lineto 351.754313 3.285655 lineto 352.338037 3.119051 lineto 352.921762 2.952982 lineto 353.505487 2.787622 lineto 354.089212 2.623165 lineto 354.672971 2.459825 lineto 355.256696 2.297843 lineto 355.840454 2.137481 lineto 356.424212 1.979032 lineto 357.007971 1.822817 lineto 357.591729 1.669189 lineto 358.175488 1.518538 lineto 358.759246 1.371289 lineto 359.343038 1.227909 lineto 359.926796 1.088907 lineto 360.510588 0.954842 lineto 361.094379 0.826320 lineto 361.678138 0.704004 lineto 362.261930 0.588616 lineto 362.845721 0.480939 lineto 363.429513 0.381825 lineto 364.013271 0.292197 lineto 364.597063 0.213059 lineto 365.180855 0.145496 lineto 365.764647 0.090683 lineto 366.348438 0.049891 lineto 366.932197 0.024494 lineto 367.515988 0.015977 lineto stroke 1 setlinewidth 0 setgray 17.500000 0.000000 3.000000 0.000000 360.000000 arc fill 367.515988 0.015977 3.000000 0.000000 360.000000 arc fill 0.0 setgray 0.5 setlinewidth newpath 17.500000 0.000000 moveto 17.500000 0.000000 lineto 35.014724 0.014726 lineto 52.515913 17.515913 lineto 70.002470 0.002470 lineto 87.486757 34.986755 lineto 104.983219 -0.016781 lineto 122.495110 52.495110 lineto 140.011499 0.011497 lineto 157.517307 70.017315 lineto 175.007210 0.007212 lineto 192.490487 87.490479 lineto 209.982493 -0.017500 lineto 227.490604 69.990608 lineto 245.007360 0.007353 lineto 262.517340 52.517336 lineto 280.011382 0.011380 lineto 297.494960 34.994962 lineto 314.983177 -0.016824 lineto 332.486849 17.486858 lineto 350.002637 0.002623 lineto 367.515988 0.015977 lineto stroke 0.0 setgray 35.014724 0.014726 3.000000 0.000000 360.000000 arc stroke 52.515913 17.515913 3.000000 0.000000 360.000000 arc stroke 70.002470 0.002470 3.000000 0.000000 360.000000 arc stroke 87.486757 34.986755 3.000000 0.000000 360.000000 arc stroke 104.983219 -0.016781 3.000000 0.000000 360.000000 arc stroke 122.495110 52.495110 3.000000 0.000000 360.000000 arc stroke 140.011499 0.011497 3.000000 0.000000 360.000000 arc stroke 157.517307 70.017315 3.000000 0.000000 360.000000 arc stroke 175.007210 0.007212 3.000000 0.000000 360.000000 arc stroke 192.490487 87.490479 3.000000 0.000000 360.000000 arc stroke 209.982493 -0.017500 3.000000 0.000000 360.000000 arc stroke 227.490604 69.990608 3.000000 0.000000 360.000000 arc stroke 245.007360 0.007353 3.000000 0.000000 360.000000 arc stroke 262.517340 52.517336 3.000000 0.000000 360.000000 arc stroke 280.011382 0.011380 3.000000 0.000000 360.000000 arc stroke 297.494960 34.994962 3.000000 0.000000 360.000000 arc stroke 314.983177 -0.016824 3.000000 0.000000 360.000000 arc stroke 332.486849 17.486858 3.000000 0.000000 360.000000 arc stroke 350.002637 0.002623 3.000000 0.000000 360.000000 arc stroke 1.0 setgray 35.014724 0.014726 2.800000 0.000000 360.000000 arc fill 52.515913 17.515913 2.800000 0.000000 360.000000 arc fill 70.002470 0.002470 2.800000 0.000000 360.000000 arc fill 87.486757 34.986755 2.800000 0.000000 360.000000 arc fill 104.983219 -0.016781 2.800000 0.000000 360.000000 arc fill 122.495110 52.495110 2.800000 0.000000 360.000000 arc fill 140.011499 0.011497 2.800000 0.000000 360.000000 arc fill 157.517307 70.017315 2.800000 0.000000 360.000000 arc fill 175.007210 0.007212 2.800000 0.000000 360.000000 arc fill 192.490487 87.490479 2.800000 0.000000 360.000000 arc fill 209.982493 -0.017500 2.800000 0.000000 360.000000 arc fill 227.490604 69.990608 2.800000 0.000000 360.000000 arc fill 245.007360 0.007353 2.800000 0.000000 360.000000 arc fill 262.517340 52.517336 2.800000 0.000000 360.000000 arc fill 280.011382 0.011380 2.800000 0.000000 360.000000 arc fill 297.494960 34.994962 2.800000 0.000000 360.000000 arc fill 314.983177 -0.016824 2.800000 0.000000 360.000000 arc fill 332.486849 17.486858 2.800000 0.000000 360.000000 arc fill 350.002637 0.002623 2.800000 0.000000 360.000000 arc fill 0.7 setgray 1.5 setlinewidth newpath 17.500000 0.000000 moveto 18.084063 0.009694 lineto 18.668111 0.036255 lineto 19.252149 0.078200 lineto 19.836170 0.134153 lineto 20.420179 0.202844 lineto 21.004175 0.283097 lineto 21.588157 0.373826 lineto 22.172126 0.474028 lineto 22.756082 0.582778 lineto 23.340024 0.699226 lineto 23.923954 0.822586 lineto 24.507871 0.952137 lineto 25.091773 1.087216 lineto 25.675663 1.227216 lineto 26.259540 1.371580 lineto 26.843405 1.519796 lineto 27.427257 1.671397 lineto 28.011097 1.825959 lineto 28.594924 1.983093 lineto 29.178739 2.142444 lineto 29.762541 2.303690 lineto 30.346332 2.466541 lineto 30.930112 2.630733 lineto 31.513878 2.796025 lineto 32.097635 2.962202 lineto 32.681381 3.129072 lineto 33.265114 3.296460 lineto 33.848839 3.464209 lineto 34.432551 3.632183 lineto 35.016251 3.800256 lineto 35.599947 3.968320 lineto 36.183626 4.136279 lineto 36.767301 4.304048 lineto 37.350963 4.471553 lineto 37.934613 4.638731 lineto 38.518259 4.805527 lineto 39.101896 4.971894 lineto 39.685521 5.137793 lineto 40.269138 5.303191 lineto 40.852750 5.468063 lineto 41.436350 5.632385 lineto 42.019945 5.796144 lineto 42.603528 5.959326 lineto 43.187107 6.121924 lineto 43.770682 6.283935 lineto 44.354244 6.445355 lineto 44.937803 6.606187 lineto 45.521356 6.766436 lineto 46.104902 6.926107 lineto 46.688443 7.085207 lineto 47.271976 7.243747 lineto 47.855505 7.401737 lineto 48.439030 7.559189 lineto 49.022551 7.716117 lineto 49.606063 7.872533 lineto 50.189575 8.028453 lineto 50.773079 8.183891 lineto 51.356578 8.338863 lineto 51.940078 8.493384 lineto 52.523574 8.647470 lineto 53.107065 8.801137 lineto 53.690552 8.954400 lineto 54.274039 9.107276 lineto 54.857522 9.259780 lineto 55.441001 9.411926 lineto 56.024480 9.563732 lineto 56.607955 9.715210 lineto 57.191429 9.866377 lineto 57.774904 10.017245 lineto 58.358374 10.167829 lineto 58.941845 10.318144 lineto 59.525315 10.468201 lineto 60.108786 10.618014 lineto 60.692256 10.767595 lineto 61.275722 10.916954 lineto 61.859193 11.066106 lineto 62.442659 11.215060 lineto 63.026130 11.363826 lineto 63.609600 11.512415 lineto 64.193071 11.660838 lineto 64.776541 11.809102 lineto 65.360011 11.957217 lineto 65.943486 12.105192 lineto 66.526961 12.253035 lineto 67.110435 12.400753 lineto 67.693914 12.548354 lineto 68.277393 12.695845 lineto 68.860876 12.843232 lineto 69.444359 12.990522 lineto 70.027846 13.137721 lineto 70.611329 13.284834 lineto 71.194820 13.431867 lineto 71.778312 13.578824 lineto 72.361811 13.725712 lineto 72.945311 13.872532 lineto 73.528811 14.019291 lineto 74.112319 14.165991 lineto 74.695827 14.312637 lineto 75.279335 14.459232 lineto 75.862851 14.605779 lineto 76.446368 14.752281 lineto 77.029892 14.898740 lineto 77.613417 15.045159 lineto 78.196942 15.191541 lineto 78.780475 15.337888 lineto 79.364016 15.484200 lineto 79.947557 15.630480 lineto 80.531099 15.776731 lineto 81.114649 15.922951 lineto 81.698198 16.069144 lineto 82.281756 16.215310 lineto 82.865323 16.361450 lineto 83.448881 16.507563 lineto 84.032456 16.653653 lineto 84.616030 16.799718 lineto 85.199605 16.945758 lineto 85.783188 17.091774 lineto 86.366780 17.237767 lineto 86.950371 17.383735 lineto 87.533963 17.529680 lineto 88.117563 17.675596 lineto 88.701171 17.821490 lineto 89.284779 17.967357 lineto 89.868395 18.113198 lineto 90.452012 18.259011 lineto 91.035637 18.404794 lineto 91.619262 18.550548 lineto 92.202895 18.696268 lineto 92.786528 18.841957 lineto 93.370169 18.987613 lineto 93.953811 19.133232 lineto 94.537461 19.278814 lineto 95.121111 19.424356 lineto 95.704769 19.569857 lineto 96.288427 19.715313 lineto 96.872094 19.860725 lineto 97.455769 20.006086 lineto 98.039443 20.151398 lineto 98.623118 20.296655 lineto 99.206802 20.441858 lineto 99.790485 20.586999 lineto 100.374177 20.732079 lineto 100.957868 20.877092 lineto 101.541568 21.022039 lineto 102.125268 21.166911 lineto 102.708968 21.311707 lineto 103.292676 21.456424 lineto 103.876393 21.601056 lineto 104.460109 21.745600 lineto 105.043826 21.890052 lineto 105.627543 22.034408 lineto 106.211268 22.178662 lineto 106.795001 22.322811 lineto 107.378734 22.466848 lineto 107.962468 22.610769 lineto 108.546201 22.754570 lineto 109.129943 22.898244 lineto 109.713684 23.041784 lineto 110.297434 23.185187 lineto 110.881176 23.328448 lineto 111.464926 23.471557 lineto 112.048684 23.614509 lineto 112.632434 23.757301 lineto 113.216193 23.899921 lineto 113.799951 24.042364 lineto 114.383718 24.184626 lineto 114.967484 24.326696 lineto 115.551243 24.468567 lineto 116.135010 24.610232 lineto 116.718785 24.751685 lineto 117.302551 24.892914 lineto 117.886326 25.033913 lineto 118.470101 25.174675 lineto 119.053876 25.315188 lineto 119.637651 25.455445 lineto 120.221426 25.595437 lineto 120.805210 25.735156 lineto 121.388985 25.874589 lineto 121.972768 26.013727 lineto 122.556552 26.152564 lineto 123.140335 26.291083 lineto 123.724118 26.429281 lineto 124.307902 26.567141 lineto 124.891685 26.704656 lineto 125.475469 26.841815 lineto 126.059252 26.978605 lineto 126.643035 27.115013 lineto 127.226827 27.251033 lineto 127.810611 27.386646 lineto 128.394394 27.521846 lineto 128.978177 27.656616 lineto 129.561969 27.790946 lineto 130.145752 27.924823 lineto 130.729536 28.058234 lineto 131.313319 28.191164 lineto 131.897103 28.323602 lineto 132.480886 28.455533 lineto 133.064669 28.586944 lineto 133.648453 28.717820 lineto 134.232236 28.848146 lineto 134.816020 28.977910 lineto 135.399795 29.107096 lineto 135.983578 29.235687 lineto 136.567353 29.363673 lineto 137.151128 29.491033 lineto 137.734903 29.617755 lineto 138.318678 29.743824 lineto 138.902453 29.869223 lineto 139.486228 29.993936 lineto 140.069995 30.117946 lineto 140.653770 30.241236 lineto 141.237545 30.363794 lineto 141.821303 30.485598 lineto 142.405078 30.606633 lineto 142.988837 30.726884 lineto 143.572595 30.846331 lineto 144.156353 30.964961 lineto 144.740112 31.082750 lineto 145.323870 31.199686 lineto 145.907629 31.315749 lineto 146.491387 31.430922 lineto 147.075145 31.545185 lineto 147.658887 31.658522 lineto 148.242645 31.770917 lineto 148.826387 31.882347 lineto 149.410129 31.992795 lineto 149.993887 32.102243 lineto 150.577629 32.210673 lineto 151.161354 32.318067 lineto 151.745095 32.424405 lineto 152.328837 32.529669 lineto 152.912579 32.633837 lineto 153.496304 32.736893 lineto 154.080029 32.838819 lineto 154.663770 32.939595 lineto 155.247495 33.039201 lineto 155.831220 33.137618 lineto 156.414945 33.234827 lineto 156.998653 33.330809 lineto 157.582378 33.425546 lineto 158.166103 33.519017 lineto 158.749812 33.611202 lineto 159.333520 33.702084 lineto 159.917245 33.791645 lineto 160.500953 33.879860 lineto 161.084661 33.966717 lineto 161.668370 34.052192 lineto 162.252061 34.136268 lineto 162.835770 34.218924 lineto 163.419478 34.300145 lineto 164.003170 34.379907 lineto 164.586861 34.458194 lineto 165.170569 34.534986 lineto 165.754261 34.610265 lineto 166.337953 34.684011 lineto 166.921644 34.756207 lineto 167.505336 34.826834 lineto 168.089027 34.895873 lineto 168.672702 34.963306 lineto 169.256394 35.029114 lineto 169.840069 35.093281 lineto 170.423760 35.155782 lineto 171.007435 35.216610 lineto 171.591110 35.275736 lineto 172.174802 35.333152 lineto 172.758477 35.388831 lineto 173.342152 35.442763 lineto 173.925827 35.494925 lineto 174.509501 35.545306 lineto 175.093176 35.593885 lineto 175.676835 35.640640 lineto 176.260509 35.685563 lineto 176.844184 35.728634 lineto 177.427843 35.769832 lineto 178.011518 35.809147 lineto 178.595176 35.846561 lineto 179.178851 35.882050 lineto 179.762509 35.915613 lineto 180.346184 35.947218 lineto 180.929842 35.976858 lineto 181.513500 36.004516 lineto 182.097175 36.030176 lineto 182.680833 36.053825 lineto 183.264492 36.075442 lineto 183.848150 36.095014 lineto 184.431808 36.112530 lineto 185.015466 36.127971 lineto 185.599124 36.141323 lineto 186.182799 36.152567 lineto 186.766458 36.161696 lineto 187.350116 36.168689 lineto 187.933774 36.173537 lineto 188.517432 36.176220 lineto 189.101090 36.176725 lineto 189.684749 36.175044 lineto 190.268407 36.171151 lineto 190.852065 36.165043 lineto 191.435723 36.156702 lineto 192.019382 36.146109 lineto 192.603040 36.133258 lineto 193.186698 36.118129 lineto 193.770356 36.100709 lineto 194.354014 36.080987 lineto 194.937689 36.058944 lineto 195.521348 36.034570 lineto 196.105006 36.007846 lineto 196.688664 35.978765 lineto 197.272322 35.947306 lineto 197.855997 35.913455 lineto 198.439655 35.877202 lineto 199.023314 35.838533 lineto 199.606988 35.797427 lineto 200.190647 35.753868 lineto 200.774305 35.707852 lineto 201.357980 35.659348 lineto 201.941638 35.608354 lineto 202.525313 35.554848 lineto 203.108971 35.498814 lineto 203.692646 35.440239 lineto 204.276321 35.379102 lineto 204.859979 35.315386 lineto 205.443654 35.249075 lineto 206.027329 35.180153 lineto 206.611004 35.108601 lineto 207.194679 35.034397 lineto 207.778337 34.957528 lineto 208.362012 34.877970 lineto 208.945687 34.795704 lineto 209.529362 34.710710 lineto 210.113053 34.622968 lineto 210.696728 34.532453 lineto 211.280403 34.439148 lineto 211.864078 34.343026 lineto 212.447753 34.244062 lineto 213.031445 34.142235 lineto 213.615119 34.037520 lineto 214.198794 33.929888 lineto 214.782486 33.819315 lineto 215.366161 33.705774 lineto 215.949852 33.589235 lineto 216.533527 33.469666 lineto 217.117219 33.347042 lineto 217.700894 33.221327 lineto 218.284585 33.092492 lineto 218.868277 32.960503 lineto 219.451952 32.825322 lineto 220.035644 32.686917 lineto 220.619335 32.545248 lineto 221.203027 32.400278 lineto 221.786702 32.251969 lineto 222.370393 32.100278 lineto 222.954085 31.945163 lineto 223.537776 31.786579 lineto 224.121468 31.624483 lineto 224.705160 31.458825 lineto 225.288835 31.289558 lineto 225.872526 31.116631 lineto 226.456218 30.939996 lineto 227.039909 30.759593 lineto 227.623601 30.575372 lineto 228.207293 30.387271 lineto 228.790984 30.195234 lineto 229.374676 29.999199 lineto 229.958351 29.799101 lineto 230.542042 29.594876 lineto 231.125734 29.386454 lineto 231.709425 29.173767 lineto 232.293100 28.956742 lineto 232.876792 28.735306 lineto 233.460484 28.509379 lineto 234.044158 28.278883 lineto 234.627850 28.043735 lineto 235.211525 27.803849 lineto 235.795217 27.559140 lineto 236.378891 27.309516 lineto 236.962583 27.054883 lineto 237.546258 26.795146 lineto 238.129933 26.530205 lineto 238.713608 26.259957 lineto 239.297283 25.984296 lineto 239.880958 25.703115 lineto 240.464633 25.416301 lineto 241.048307 25.123735 lineto 241.631982 24.825301 lineto 242.215641 24.520874 lineto 242.799315 24.210328 lineto 243.382974 23.893533 lineto 243.966649 23.570353 lineto 244.550307 23.240652 lineto 245.133965 22.904283 lineto 245.717623 22.561103 lineto 246.301281 22.210960 lineto 246.884940 21.853696 lineto 247.468581 21.489154 lineto 248.052239 21.117166 lineto 248.635881 20.737566 lineto 249.219522 20.350176 lineto 249.803164 19.954817 lineto 250.386806 19.551307 lineto 250.970430 19.139453 lineto 251.554072 18.719062 lineto 252.137697 18.289932 lineto 252.721322 17.851858 lineto 253.304946 17.404628 lineto 253.888571 16.948022 lineto 254.472196 16.481819 lineto 255.055804 16.005787 lineto 255.639429 15.519690 lineto 256.223037 15.023286 lineto 256.806645 14.516325 lineto 257.390237 13.998551 lineto 257.973845 13.469703 lineto 258.557436 12.929508 lineto 259.141028 12.377691 lineto 259.724619 11.813966 lineto 260.308211 11.238043 lineto 260.891786 10.649621 lineto 261.475360 10.048392 lineto 262.058935 9.434042 lineto 262.642510 8.806246 lineto 263.226068 8.164673 lineto 263.809643 7.508982 lineto 264.393201 6.838822 lineto 264.976742 6.153836 lineto 265.560300 5.453657 lineto 266.143842 4.737907 lineto 266.727383 4.006199 lineto 267.310925 3.258138 lineto 267.894466 2.493317 lineto 268.477991 1.711320 lineto 269.061515 0.911720 lineto 269.645040 0.094079 lineto 270.228565 -0.742051 lineto 270.812073 -1.597130 lineto 271.395581 -2.471628 lineto 271.979089 -3.366027 lineto 272.562597 -4.280824 lineto 273.146088 -5.216522 lineto 273.729579 -6.173642 lineto 274.313071 -7.152715 lineto 274.896562 -8.154284 lineto 275.480037 -9.178908 lineto 276.063511 -10.227156 lineto 276.646986 -11.299616 lineto 277.230461 -12.396883 lineto 277.813919 -13.519573 lineto 278.397377 -14.668311 lineto 278.980834 -15.843740 lineto 279.564292 -17.046519 lineto 280.147734 -18.277321 lineto 280.731192 -19.536833 lineto 281.314616 -20.825765 lineto 281.898041 -22.144835 lineto 282.481499 -23.494782 lineto 283.064923 -24.876366 lineto 283.648348 -26.290357 lineto 284.231772 -27.737547 lineto 284.815164 -29.218749 lineto 285.398588 -30.734788 lineto 285.982013 -32.286516 lineto 286.565404 -33.874797 lineto 287.148795 -35.500520 lineto 287.732220 -37.164598 lineto 288.315611 -38.867950 lineto 288.899002 -40.611531 lineto 289.482393 -42.396314 lineto 290.065784 -44.223288 lineto 290.649176 -46.093470 lineto 291.232533 -48.007904 lineto 291.815925 -49.967649 lineto 292.399316 -51.973791 lineto 292.982674 -54.027438 lineto 293.566031 -56.129731 lineto 294.149423 -58.281829 lineto 294.732780 -60.484921 lineto 295.316138 -62.740213 lineto 295.899496 -65.048952 lineto 296.482887 -67.412407 lineto 297.066245 -69.831872 lineto 297.649603 -72.308664 lineto 298.232927 -74.844153 lineto 298.816285 -77.439706 lineto 299.399643 -80.096751 lineto 299.983001 -82.816724 lineto 300.566359 -85.601108 lineto 301.149716 -88.451399 lineto 301.733041 -91.369156 lineto 302.316399 -94.355940 lineto 302.899756 -97.413369 lineto 303.483081 -100.543081 lineto 304.066439 -103.746767 lineto 304.649796 -107.026123 lineto 305.233154 -110.382925 lineto 305.816479 -113.818944 lineto 306.399837 -117.336022 lineto 306.983194 -120.936029 lineto 307.566519 -124.620860 lineto 308.149877 -128.392466 lineto 308.733234 -132.252843 lineto 309.316592 -136.204027 lineto 309.899950 -140.248086 lineto 310.483308 -144.387133 lineto 311.066666 -148.623362 lineto 311.650023 -152.958941 lineto 312.233381 -157.396159 lineto 312.816739 -161.937301 lineto 313.400097 -166.584721 lineto 313.983455 -171.340821 lineto 314.566846 -176.208072 lineto 315.150204 -181.188943 lineto 315.733595 -186.286023 lineto 316.316986 -191.501880 lineto 316.900344 -196.839201 lineto 317.483735 -202.300708 lineto 318.067126 -207.889154 lineto stroke showpage :::::::::::::: subdiv.c :::::::::::::: #include void subdiv(degree,coeff,weight,t,bleft,bright,wleft,wright) /* subdivides ratbez curve at parameter value t. Output: left and right polygon with respective weights. Ordering of right polygon is reversed. */ float coeff[],weight[],bleft[], bright[],wleft[],wright[]; float t; int degree; { int r,i; float t1,ww1,ww2; t1 = 1.0 - t; /* first, obtain right subpolygon from rat de Casteljau */ for (i=0;i <= degree; i++) wright[i] = weight[i]; for (i=0;i <= degree; i++) bright[i] = coeff[i]; for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) { ww1 = wright[i]; ww2= wright[i+1]; wright[i] = t1*wright[i] + t*wright[i+1]; bright[i]= ( t1*ww1 * bright[i] + t*ww2 * bright[i+1] ) / wright[i]; } /* use same as above in order to get left half. Idea: reverse ordering; then the above yields left half. */ t = 1.0 - t; t1 = 1.0 - t; for (i=0;i <= degree; i++) wleft[degree -i] = weight[i]; for (i=0;i <= degree; i++) bleft[degree-i] = coeff[i]; for (r=1; r<= degree; r++) for (i=0; i<= degree - r; i++) { ww1 = wleft[i]; ww2= wleft[i+1]; wleft[i] = t1*wleft[i] + t*wleft[i+1]; bleft[i]= ( t1*ww1 * bleft[i] + t*ww2 * bleft[i+1] ) / wleft[i]; } } :::::::::::::: tri_decas.c :::::::::::::: /* * Routine: tri_decast() * * Function: Triangular de Casteljau algorithm for an n^th * degree triangular Bezier patch. * Algorithm is applied once for a given (u,v,w) and works on one * coordinate only. * * Input: bpts[i] ................. Bezier points (of one coordinate) * as a linear array (see below). * i=0...tri_num * tri_num ................. Based on the degree of the patch. * (n+1)(n+2)/2 * ndeg .................... Degree (n) of the patch. * u[i] .................... Barycentric coordinates (u,v,w) of * evaluation point. i=0,2 * b[i]..................... A working array with dimension >= * to bpts[]. * * Output: patch_pt ................ One coordinate of the point on * the patch evaluated at (u,v,w). * b[] ..................... Contents have been changed. * * Linear array structure: It is assumed that the usual (i,k,j) structure * of the Bezier net has been put into a linear * array in the following manner. * (E.g., for n=3) * b_(300) --> bpts[0] (u=1) * b_(030) --> bpts[6] (v=1) * b_(003) --> bpts[9] (w=1) */ #include #include tri_decast(bpts, tri_num, ndeg, u, b, patch_pt ) float bpts[]; int tri_num; int ndeg; float u[3]; float b[]; float *patch_pt; { int i, j, k, l, m; int r; /* ------------------------------ */ /* * To avoid writing over the original control points, * copy into a working array. */ for (i=0; i