rendered paste body#include<math.h>
#include<winbgim.h>
#include<stdio.h>
int acolour,athick,acount=0,acx,acy,ar,arx,ary;
double ast,aend,aincr=0.05;
void arcpoints(int x,int y);
void draw(int x,int y);
extern int colour,thick;
void drawarc(int colour,int thick)
{
registermousehandler(WM_LBUTTONDOWN,arcpoints);
}
void arcpoints(int x,int y)
{
if(x>104 && x<750 && y>51 && y<439)
{
acolour=colour;
athick=thick;
if(acount==0)
{
acx=x;
acy=y;
setcolor(GREEN);
pieslice(x,y,0,360,2);
acount++;
printf("centre\n");
}
else if(acount==1)
{
if(x>acx)
arx=x-acx;
else
arx=acx-x;
if(y>acy)
ary=y-acy;
else
ary=acy-y;
ar=(int)sqrt(arx*arx+ary*ary);
acount++;
printf("radius %d \n",ar);
}
if(acount==2)
{
printf("enter the starting and end angle of arc\n");
scanf("%lf %lf",&ast,&aend);
if(aend<ast)
{
aend=aend+360;
}
for(double a=ast;a<aend;a=a+aincr)
{
int ap,aq;
ap=ar*cos(a*3.142/180);
aq=ar*sin(a*3.142/180);
if(acx+ap>104 && acx+ap<750 && acy-aq>51 && acy-aq<439)
putpixel(acx+ap,acy-aq,acolour);
for(int t=1;t<=athick/2;t++)
{
if(acx+ap+t>104 && acx+ap+t<750 && acy-aq+t>51 && acy-aq+t<439)
putpixel(acx+ap+t,acy-aq+t,acolour);
}
for(int t=0;t<=athick/2;t++)
{
if(acx+ap+t>104 && acx+ap+t<750 && acy-aq-t>51 && acy-aq-t<439)
putpixel(acx+ap+t,acy-aq-t,acolour);
}
}
acount=0;
}
}
else
{
acount=0;
draw(x,y);
}
}