# include <iostream.h>
 # include <graphics.h>
 # include    <conio.h>
 # include     <math.h>
 void show_screen( );
 void Elliptical_arc(constint,constint,constint,constint,constint,constint);
 int main( )
    {
       int driver=VGA;
       int mode=VGAHI;
 
       int h=0;
       int k=0;
       int rx=0;
       int ry=0;
       int s=0;
       int e=0;
       do
      {
         show_screen( );
         gotoxy(8,10);
         cout<<"Central Point of the Ellipse : (h,k) :";
         gotoxy(8,11);
         cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
         gotoxy(12,13);
         cout<<"Enter the value of h = ";
         cin>>h;
         gotoxy(12,14);
         cout<<"Enter the value of k = ";
         cin>>k;
         gotoxy(8,18);
         cout<<"Radius of the Ellipse : (rx,ry) :";
         gotoxy(8,19);
         cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
         gotoxy(12,21);
         cout<<"Enter the radius along x-axis : rx = ";
         cin>>rx;
         gotoxy(12,22);
         cout<<"Enter the radius along y-axis : ry = ";
         cin>>ry;
         gotoxy(8,26);
         cout<<"Starting & Ending Angle of Arc : (s,e) :";
         gotoxy(8,27);
         cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ";
         gotoxy(12,29);
         cout<<"Enter the value of s = ";
         cin>>s;
         gotoxy(12,31);
         cout<<"Enter the value of e = ";
         cin>>e;
             initgraph(&driver,&mode,"..\\Bgi");
         setcolor(15);
           Elliptical_arc(h,k,rx,ry,s,e);
         setcolor(15);
           outtextxy(110,460,"Press <Enter> to continue or any other key to exit.");
         int key=int(getch( ));
         if(key!=13)
        break;
      }
       while(1);
       return 0;
    }
 /*************************************************************************///---------------------------  Elliptical_arc( )  -----------------------///*************************************************************************/void Elliptical_arc(constint h,constint k,constint rx,constint ry,
                  constint start_angle,constint end_angle)
    {
       int color=getcolor( );
       float angle=(((start_angle<=end_angle)?start_angle:end_angle)*(M_PI/180));
       float range=(((end_angle>start_angle)?end_angle:start_angle)*(M_PI/180));
       float x=(rx*cos(angle));
       float y=(ry*sin(angle));
       do
      {
         putpixel((int)(h+x+0.5),(int)(k-y+0.5),color);
         angle+=0.001;
         x=(rx*cos(angle));
         y=(ry*sin(angle));
      }
       while(angle<=range);
    }
 /*************************************************************************///--------------------------  show_screen( )  ---------------------------///*************************************************************************/void show_screen( )
    {
       restorecrtmode( );
       textmode(C4350);
       cprintf("\n********************************************************************************");
       cprintf("******************************-                  -******************************");
       cprintf("*------------------------------ ");
       textbackground(1);
       cprintf(" Elliptical Arc ");
       textbackground(8);
       cprintf(" ------------------------------*");
       cprintf("*-****************************-                  -****************************-*");
       cprintf("*-****************************************************************************-*");
       for(int count=0;count<42;count++)
      cprintf("*-*                                                                          *-*");
       gotoxy(1,46);
       cprintf("*-****************************************************************************-*");
       cprintf("*------------------------------------------------------------------------------*");
       cprintf("********************************************************************************");
       gotoxy(1,2);
    }