#include #include FILE *fpA; FILE *fpB; FILE *fpC; FILE *fpD; FILE *fpE;char a; int dxx,dyy, nx1=150,ny1=50,nx2=650,ny2=800; double x,y, t; /******************************************************************   このProgram ( x(t)y(t)graph.txt ) を実行するには、     あらかじめ用意されている次の3つのFile、    File ( ZAn.txt, ZBn.txt, ZEn.txt) が必要です。    途中で File ( ZDn.txt ) が生成され、そのdataをもとに、    最終的に html 形式のFile ( a.html ) が 出力されます。 ****************************************************************** ***************** INPUT *************************************** nfn = Number of Graphs { Max nfn = 9 } ****************************************************************** ●このProgramは最大9つのGraphまでしか重ね描きができません。     まだまだ不完全で改良の余地があります。  Programを解読して、何個でもGraphが描けるように改良してください。    ax1,ax2,,,ay1,ay2,,,,ss,s1,s2,,,, などの代わりに、 ax[i],ay[i] = Absolute Position of the i-th Graph-Naming *s[i] = the i-th Graph-Naming 等となるように。。。 ****************************************************************** ************************************************************************* * * *  以下のInput Code を自由に変更して、compile実行してください  * * * *************************************************************************/ double xmin=-20,xmax=60,ymin=-20,ymax=40,xx=0,yy=0; int nfn=9, /************************************************************************/ ax1=570, ay1=480, ax2=630, ay2=250, ax3=300, ay3=400, ax4=190, ay4=360, ax5=400, ay5=350, ax6=480, ay6=200, ax7=280, ay7=200, ax8=280, ay8=670, ax9=630, ay9=570; /************************************************************************/ char *ss = " { x(t), y(t) } のグラフを9つ描く! " , *s1 = "@ y=(x+10)*(x-5)*(x-40)/1500" , *s2 = "A y=(x+15)*(x-25)/30" , *s3 = "B y=9*(45-x)/10" , *s4 = "C y=x*x*x/50" , *s5 = "D y=20*sin(x/5) + 15" , *s6 = "E 半径10の円" , *s7 = "F 半径(20,10)の楕円" , *s8 = "G ななめ楕円" , *s9 = "H x=5*sin(y) + 35 " ; /************************************************************************/ double fxy( int ifn ) { x=xmin+(xmax-xmin)*t; if (ifn==1) { y=(x+10)*(x-5)*(x-40)/1500 ; } if (ifn==2) { y=(x+15)*(x-25)/30 ; } if (ifn==3) { y=9*(45-x)/10 ; } if (ifn==4) { y=x*x*x/50 ; } if (ifn==5) { y=20*sin(x/5) + 15 ; } if (ifn==6) { x=10*cos(7*t) ;y=10*sin(7*t) ; } if (ifn==7) { x=20*cos(7*t)+5;y=10*sin(7*t)+25 ; } if (ifn==8) { x=7*cos(7*t)+10*sin(7*t)+45;y=10*sin(7*t)+3*cos(7*t)+25; } if (ifn==9) { y=xmin+(xmax-xmin)*t; x=5*sin(y) + 35 ; } /********************** END of INPUT Code ****************************/ return 0;} /************************************************************************/ int POINT(int X,int Y) { fprintf(fpC,"

%c

\n",a); return 0;} /************************************************************************/ int PLOT(int X1,int Y1,int X2,int Y2 ) { int X,Y,DX,DY,NN,i;double dx,dy; DX=X2-X1;DY=Y2-Y1;NN=DX; if(NN\n"); i=1; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax1); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay1); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s1); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=2; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax2); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay2); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s2); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=3; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax3); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay3); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s3); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=4; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax4); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay4); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s4); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=5; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax5); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay5); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s5); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=6; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax6); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay6); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s6); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=7; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax7); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay7); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s7); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; i=8; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax8); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay8); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s8); fprintf(fpC,"

\n"); if(i==nfn) goto ENDW; for (j=1;j<18;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ax9); for (j=1;j<10;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%d",ay9); for (j=1;j<55;j++){ c=fgetc(fpE);fprintf(fpC,"%c",c);} fprintf(fpC,"%s",s9); fprintf(fpC,"

\n"); /************************/ ENDW: fprintf(fpC,"\n"); fclose(fpA);fclose(fpB);fclose(fpC);fclose(fpD);fclose(fpE);return 0;} /***********************************************************************/ int main(void){ int it,i,j,ifn,nxx,nyy;char c; fpD=fopen("ZDn.txt","w"); fprintf(fpD,"*\n"); fprintf(fpD,"s\n%d\n%d\n%d\n%d\n",nx1,ny1,nx2,ny2); /* Graph 上での原点(xx,yy)の絶対座標 (nxx,nyy) の計算 */ dxx=(xx-xmin)*(ny2-ny1)/(xmax-xmin); dyy=(yy-ymin)*(nx1-nx2)/(ymax-ymin); nyy=ny1+dxx; nxx=nx2+dyy; fprintf(fpD,"c\n.\n"); fprintf(fpD,"p\n%d\n%d\n%d\n%d\n",nx1,nyy,nx2,nyy); fprintf(fpD,"p\n%d\n%d\n%d\n%d\n",nxx,ny1,nxx,ny2); for (i=1;i<5;i++) { fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy+i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy-i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy+i); fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy-i);} for (i=1;i<5;i++) { fprintf(fpD,"q\n%d\n%d\n",nxx+dyy+i,nyy+i); fprintf(fpD,"q\n%d\n%d\n",nxx+dyy-i,nyy-i); fprintf(fpD,"q\n%d\n%d\n",nxx+dyy-i,nyy+i); fprintf(fpD,"q\n%d\n%d\n",nxx+dyy+i,nyy-i);} for (i=1;i<5;i++) { fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy+dxx+i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy+dxx-i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy+dxx+i); fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy+dxx-i);} for (i=1;i<5;i++) { fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy+2*dxx+i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy+2*dxx-i); fprintf(fpD,"q\n%d\n%d\n",nxx-i,nyy+2*dxx+i); fprintf(fpD,"q\n%d\n%d\n",nxx+i,nyy+2*dxx-i);} /************************/ for (ifn=1;ifn<=nfn;ifn++){ for (it=0;it<=1000;it++) { t=0.001*it; fxy( ifn ) ; if(x>xmax) x=xmax;if(xymax) y=ymax;if(y=ny2) goto NEXT;if(i<=ny1) goto NEXT; if(j>=nx2) goto NEXT;if(j<=nx1) goto NEXT; fprintf(fpD,"q\n%d\n%d\n",j,i);NEXT:}} fprintf(fpD,"c\n0\n");fprintf(fpD,"q\n%d\n%d\n",nxx+15,nyy-10); fprintf(fpD,"!\n");fclose(fpD); Graph(); printf("\n\n Please see a.html ... \n\n"); c=getchar( ); if(c=='s') return 0;return 0; } /************************************************************************/