#include<stdio.h>
#include<math.h>
#include<graphics.h>
#include<conio.h>
#define PI 3.1415926
float x0,y0,xe,ye,xi,yi;
int num,i,i0,F,step,r,c0,ce,a,b;
dw()
{ setlinestyle(0,0,3);
lineto(540+xi,240-yi);
delay(6200000);}
main()
{ int driver=DETECT,mode;
initgraph(&driver,&mode,"c:\\tc");
printf("*r<250* r=\n");scanf("%d",&r);
printf("*90<=c0<180* c0=");scanf("%d",&c0);
printf("*180<=ce<=270* ce=");scanf("%d",&ce);
printf("step=");scanf("%d",&step);
cleardevice();
setbkcolor(14);
x0=r*cos(c0*PI/180);y0=r*sin(c0*PI/180);
xe=r*cos(ce*PI/180);ye=r*sin(ce*PI/180);
num=(int)(2*r-abs(x0)-abs(xe)+abs(y0-ye));
if(num%step!=0){num=num/step+1;}
else num=num/step;
xi=x0;yi=y0;F=0;
setlinestyle(0,0,3);
setcolor(2);
line(0,240,640,240);
line(540,0,540,480);
line(640,240,635,245);line(640,240,635,235);
line(540,0,535,5);
line(540,0,545,5);
setcolor(1);
setlinestyle(0,0,1);
i0=240/step;
for(i=-i0;i<=i0;i++)
{ if(i!=0) { a=240+i*step;line(0,a,900,a);}}
i0=540/step;
for(i=-i0;i<=i0;i++)
{ if(i!=0) { b=540+i*step;line(b,0,b,480);}}
setcolor(6);
setlinestyle(0,0,2);
arc(540,240,c0,ce,r);
setcolor(4);
moveto(540+x0,240-y0);
for(i=1;i<(num+1);i++)
{ if(yi>=0)
{ if(F>=0)
{ yi=yi-step;F=xi*xi+yi*yi-r*r;dw();continue;}
else
{ xi=xi-step;F=xi*xi+yi*yi-r*r;dw();continue;}
}
if(yi<0)
{ if(F>=0)
{ xi=xi+step;F=xi*xi+yi*yi-r*r;dw();continue;}
else
{ yi=yi-step;F=xi*xi+yi*yi-r*r;dw();continue;}
}
}
getch();
closegraph();
}
- 1
- 2
前往页