- #include<iostream.h>
- #include<conio.h>
- #include<graphics.h>
- #include<dos.h>
- void main()
- {
- clrscr();
- float rx=0,ry=0,x=0,y=0,dx=0,dy=0,d1=0,d2=0;
- float rxSqr=0,rySqr=0,rx2Sqr=0,ry2Sqr=0;
- int x1=0,y1=0; int gd,gm;
- detectgraph(&gd,&gm); initgraph(&gd,&gm,"c:\\tc\\bgi");
- //textbackground(15);
- //textcolor(8);
- //setbkcolor(15);
- //setcolor(8);
- cout<<"Enter pixels for centre of an ellipse (x,y): "; cin>>x1>>y1;
- cout<<"Enter rx radius: "; cin>>rx;
- cout<<"Enter ry radius: "; cin>>ry;
- line(0,getmaxy()/2,getmaxx(),getmaxy()/2); line(getmaxx()/2,0,getmaxx()/2,getmaxy());
- x=0;
- y=ry;
- rxSqr=rx*rx; rx2Sqr=2*rxSqr; rySqr=ry*ry; ry2Sqr=2*rySqr; dx=ry2Sqr*x; dy=rx2Sqr*y;
- d1=rySqr-rxSqr*ry+(.25*rxSqr);
- do
- {
- putpixel(getmaxx()/2+(x1+x),getmaxy()/2-(y1+y),8);
- putpixel(getmaxx()/2+(x1-x),getmaxy()/2-(y1+y),8);
- putpixel(getmaxx()/2+(x1+x),getmaxy()/2-(y1-y),8);
- putpixel(getmaxx()/2+(x1-x),getmaxy()/2-(y1-y),8);
- if(d1<0)
- {
- x+=1;
- y=y; dx+=ry2Sqr; d1+=dx+rySqr;
- }
- else
- {
- x+=1;
- y-=1;
- dx+=ry2Sqr; dy-=rx2Sqr;
- d1+=dx-dy+rySqr;
- }
- delay(30);
- }while(dx<dy);
- d2=rySqr*((x+(.5))*(x+(.5)))+rxSqr*((y-1)*(y-1))-rxSqr*rySqr; do
- {
- putpixel(getmaxx()/2+(x1+x),getmaxy()/2-(y1+y),8);
- putpixel(getmaxx()/2+(x1-x),getmaxy()/2-(y1+y),8);
- putpixel(getmaxx()/2+(x1+x),getmaxy()/2-(y1-y),8);
- putpixel(getmaxx()/2+(x1-x),getmaxy()/2-(y1-y),8);
- if(d2>0)
- {
- x=x; y-=1;
- dy-=rx2Sqr; d2-=dy+rxSqr;
- }
- else
- {
- x+=1; y-=1;
- dy-=rx2Sqr; dx+=ry2Sqr; d2+=dx-dy+rxSqr;
- }
- delay(10);
- }while(y>0);
- getch();
- }
Output:

No comments:
Post a Comment