/* Program to show Animation */ #include #include #include #include #include int dx,dy,s1,s2,dp,swap=0; void bressenham(int x1,int x2,int y1,int y2) { dx=abs(x2-x1); dy=abs(y2-y1); if(x2x1) s1=1; else s1=0; if(y2y1) s2=1; else s2=0; dp=2*dy-dx; if(dy>dx) { int temp=dy; dy=dx; dx=temp; swap=1; } } void erase(int x,int y,int r,int x3,int y3,int x4,int y4 ,int x5,int y5,int x6,int y6) { setcolor(BLACK); circle(x,y,r); line(x3,y3,x4,y4); line(x5,y5,x6,y6); } void main() { clrscr(); int gd=DETECT,gm; initgraph(&gd,&gm,""); setcolor(WHITE); int x1=100,y1=100,h,b,x3,y3,x4,y4,x5,y5,x6,y6,x,y,r; printf("Enter the height of the wedge : "); scanf("%d",&h); printf("Enter the width of the edge : "); scanf("%d",&b); printf("Enter the radius of the circle : "); scanf("%d",&r); int x2=x1+b,y2=y1+h; cleardevice(); line(x1,y1,x2,y2); line(x1,y1,x1,y2); line(x1,y2,x2,y2); float angle=atan((float)(y2-y1)/(x2-x1)); x=x1+r*sin(angle); y=y1-r*cos(angle); x3=x; y3=y+r; x4=x; y4=y-r; x5=x+r; y5=y; x6=x-r; y6=y; line(x3,y3,x4,y4); line(x5,y5,x6,y6); circle(x,y,r); float ang=1/r; bressenham(x1,x2,y1,y2); while(x<(x2+r*sin(angle)) && y<(y2-r*cos(angle))) { ang+=(float)1/r; erase(x,y,r,x3,y3,x4,y4,x5,y5,x6,y6); setcolor(WHITE); line(x1,y1,x2,y2); if(dp<0) { if(swap) y=y+s2; else x=x+s1; dp+=2*dy; } else { x=x+s1; y=y+s2; dp=dp+2*dy-2*dx; } x3=x+(float)r*cos(-ang); x4=x-(float)r*cos(-ang); y3=y-(float)r*sin(-ang); y4=y+(float)r*sin(-ang); x5=x-(float)r*sin(+ang); x6=x+(float)r*sin(+ang); y5=y+(float)r*cos(+ang); y6=y-(float)r*cos(+ang); line(x3,y3,x4,y4); line(x5,y5,x6,y6); circle(x,y,r); delay(10); } getch(); }