Advertisement
MHSS

MidpointEllipse

May 1st, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<graphics.h>
  4. #include<math.h>
  5. void plot(int x,int y,int xc,int yc)
  6. {putpixel(xc+x,yc+y,RED);
  7. putpixel(xc+x,yc-y,RED);
  8. putpixel(xc-x,yc+y,RED);
  9. putpixel(xc-x,yc-y,RED);
  10. }
  11. void myellipse(long xc,long yc,long rx,long ry)
  12. {long rx2=rx*rx,ry2=ry*ry,twoRx2=2*rx2,p;
  13. long twoRy2=2*ry2,px=0,py=twoRx2*ry;
  14. long x=0,y=ry;
  15. p=ry2-rx2*ry+0.25*ry2;
  16. plot(0,ry,xc,yc);
  17. while(px<py)
  18. {x++;
  19.  px=px+twoRy2;
  20. if(p<0)
  21. p=p+px+ry2;
  22. else
  23. {y--;
  24.  py=py-twoRx2;
  25. p=p+px-py+ry2;
  26. }
  27. plot(x,y,xc,yc);
  28. }
  29. p=(ry2*(x+0.5)*(x+0.5))+(rx2*(y-1)*(y-1))-(rx2*ry2);
  30. while(y>0)
  31. {y--;
  32. py=py-twoRx2;
  33. if(p<0)
  34. {x++;
  35. px=px+twoRy2;
  36. p=p+px-py-rx2;
  37. }
  38. else
  39. p=p-py-rx2;
  40. plot(x,y,xc,yc);
  41. }
  42. }
  43. void main()
  44. {
  45. int gd=DETECT,gm;
  46. clrscr();
  47. initgraph(&gd, &gm, "C:\\tc\\bgi");
  48. myellipse(200,200,10,10);
  49. myellipse(200,200,30,30);
  50. myellipse(200,111,10,60);
  51. myellipse(200,289,10,60);
  52. myellipse(112,200,60,10);
  53. myellipse(288,200,60,10);
  54.  
  55. getch();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement