Circle Algo
Circle Algo
Algorithm for Circle :1. 2. 3. 4. 5. 6. 7. 8. 9. Declare varibles x,y,r,p. Input raidus r. Assign x=0, y=r, p=1-r. Repeat while x<y. x=x+1. If p>0 p=p+2*(x-y)+1. y=y-1. Else p=p+2*x+1. Putpixel(x+300,y+300,5). Putpixel(x+300,-y+300,5) Putpixel(-x+300,-y+300,5) Putpixel(-x+300,y+300,5) Putpixel(y+300,x+300,5) Putpixel(y+300,-x+300,5) Putpixel(-y+300,x+300,5) Putpixel(-y+300,-x+300,5) 10. End of while. 11. Close graph.
cin>>r; x=0; y=r; p=1-r; while(x<y) { x=x+1; if(p>0) { p=p+2*(x-y)+1; y=y-1; } Else { p=p+2*x+1; } putpixel(x+300,y+300,5); Putpixel(x+300,-y+300,5); Putpixel(-x+300,-y+300,5); Putpixel(-x+300,y+300,5); Putpixel(y+300,x+300,5); Putpixel(y+300,-x+300,5); Putpixel(-y+300,x+300,5); Putpixel(-y+300,-x+300,5); }
getch(); closegraph(); }
OUTPUT:
Enter the value of raidus: 200
ELLIPSE
Algorithm for ellipse:1. 2. 3. 4. 5. 6. Start . Initialize the graphic system using initgraph function. Get the input of raidus of major and minor arc from the user. Store the values of major and minor arc in an another variable. Square the value of major and minor arc. Calculate decision parameter p=(square of minor axis-(square of major axis*minor axis)+(0.25*square of major axis). 7. Put the pixel symmetrically at = (0,length of minor axis). 8. While(2*(square of minor axis*x)<=2*(square of major axis*y)), repeat step 9 to step 17. 9. Increment x axis by 1. 10. If p<0.
11. New p=(p+(square of minor axis * square of major axis)+square of major axis). 12. Else . 13. New p=(p+( square of minor axis*x axis)-(2* square of major axis*y axis)+ square of minor axis). 14. Decrement y by 1. 15. End of step 10 if else structure. 16. Plot symmetric points of ellipse in each quadrant. 17. End of step 8 loop. 18. This will give us ellipse only across minor axis now to draw an ellipse across major axis we proceed further. 19. Get last point of ellipse in 1st quadrant. 20. Initialize e= square of(x axis + .5). 21. Initialize f= square of(y axis 1). 22. Decision parameter p1=(( square of minor axis*e)+( square of major axis*f)-( square of minor axis* square of major axis). 23. While y axis != 0 repeat step 24 to step 32. 24. If p1>0. 25. New p1=(p1+ square of major axis-(2* square of major axis*x axis)). 26. Else . 27. New p1=(p1+(2* square of minor axis*(x axis +1))-(2* square of major axis*(y axis 1))+ square of major axis). 28. Increment x axis by 1. 29. End of step 25 if else structure. 30. Decrement by y axis by 1. 31. Plot symmetric point in all quadranrs. 32. End of step 23 while loop. 33. Close the graphic system. 34. Stop.
int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,E:\\TC\\BGI); float x,y,rx2,ry2,p1,p2; int xc,yc,rx,ry; cout<<"ENTER RX AND RY:"; cin>>rx,ry; cout<<"ENTER THE CO-ORDINATES OF THE CENTER:"; cin>>xc,yc; putpixel(xc,yc,5); x=0; y=ry; rx2=pow(rx,2); ry2=pow(ry,2); p1=ry2-(rx2*ry)+(0.25*rx2); while((ry2*x)<(rx2*y)) { if(p1<0) { x++; p1=p1+(2*ry2*x)+ry2; } else { x++; y--;
p1=p1+(2*ry2*x)-(2*rx2*y)+ry2; }
putpixel(xc+x,yc+y,5); putpixel(xc-x,yc+y,5); putpixel(xc+x,yc-y,5); putpixel(xc-x,yc-y,5); } p2=(ry2)*pow((x+0.5),2)+(rx2)*pow((y-1),2)-(rx2*ry2); while(y>0) { if (p2>0) { y--; p2=p2-(2*rx2*y) +rx2; } else { x++; y--;
OUTPUT
ENTER RX AND RY: 300 200 ENTER THE CO-ORDINATES OF THE CENTER: 200 100