Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3. #include<graphics.h>
  4. #define ROUND(a)((int)(a+0.5))
  5. using namespace std;
  6. class ABC{
  7. private:
  8. int x1,y1,x2,y2,x3,y3,x4,y4;
  9. public:
  10. void accept();
  11. void call();
  12. void DDA(int xa,int ya,int xb,int yb);
  13. void midpoint();
  14. void draw_midpoint(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd);
  15. void midtomid(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd);
  16. };
  17. void ABC::accept(){
  18. cout<<"Enter"<<endl;
  19. cin>>x1;
  20. cin>>y1;
  21. cin>>x2;
  22. cin>>y2;
  23. cin>>x3;
  24. cin>>y3;
  25. cin>>x4;
  26. cin>>y4;
  27. }
  28. void ABC::DDA(int xa,int ya,int xb,int yb){
  29. int dx,dy,steps,k;
  30. dx=xb-xa;
  31. dy=yb-ya;
  32. float x=xa,y=ya,xinc,yinc;
  33. if(abs(dx)>abs(dy))
  34. steps=abs(dx);
  35. else
  36. steps=abs(dy);
  37. xinc=dx/(float)steps;
  38. yinc=dy/(float)steps;
  39. putpixel(ROUND(x),ROUND(y),5);
  40. for(k=0;k<steps;k++){
  41. x+=xinc;
  42. y+=yinc;
  43. putpixel(ROUND(x),ROUND(y),5);
  44. }
  45. }
  46.  
  47. void ABC::midpoint(){
  48. int mid_x1,mid_y1,mid_x2,mid_y2,mid_x3,mid_y3,mid_x4,mid_y4;
  49. mid_x1=(x1+x2)/2;
  50. mid_y1=(y1+y2)/2;
  51. mid_x2=(x2+x3)/2;
  52. mid_y2=(y2+y3)/2;
  53. mid_x3=(x3+x4)/2;
  54. mid_y3=(y3+y4)/2;
  55. mid_x4=(x4+x1)/2;
  56. mid_y4=(y4+y1)/2;
  57. draw_midpoint(mid_x1,mid_y1,mid_x2,mid_y2,mid_x3,mid_y3,mid_x4,mid_y4);
  58. }
  59. void ABC::draw_midpoint(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd){
  60. DDA(xa,ya,xb,yb);
  61. DDA(xb,yb,xc,yc);
  62. DDA(xc,yc,xd,yd);
  63. DDA(xd,yd,xa,ya);
  64. midtomid(xa,ya,xb,yb,xc,yc,xd,yd);
  65. }
  66. void ABC::midtomid(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd){
  67. int mid_x1,mid_y1,mid_x2,mid_y2,mid_x3,mid_y3,mid_x4,mid_y4;
  68. mid_x1=(xa+xb)/2;
  69. mid_y1=(ya+yb)/2;
  70. mid_x2=(xb+xc)/2;
  71. mid_y2=(yb+yc)/2;
  72. mid_x3=(xc+xd)/2;
  73. mid_y3=(yc+yd)/2;
  74. mid_x4=(xd+xa)/2;
  75. mid_y4=(yd+ya)/2;
  76. DDA(mid_x1,mid_y1,mid_x2,mid_y2);
  77. DDA(mid_x2,mid_y2,mid_x3,mid_y3);
  78. DDA(mid_x3,mid_y3,mid_x4,mid_y4);
  79. DDA(mid_x4,mid_y4,mid_x1,mid_y1);
  80. }
  81.  
  82. void ABC::call(){
  83. DDA(x1,y1,x2,y2);
  84. delay(1000);
  85. DDA(x2,y2,x3,y3);
  86. delay(2000);
  87. DDA(x3,y3,x4,y4);
  88. delay(2000);
  89. DDA(x4,y4,x1,y1);
  90. delay(1000);
  91. midpoint();
  92. }
  93.  
  94.  
  95.  
  96. int main(){
  97. ABC a;
  98. a.accept();
  99. int gd=DETECT,gm;
  100. initgraph(&gd,&gm,NULL);
  101. a.call();
  102. getch();
  103. closegraph();
  104. restorecrtmode();
  105. return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement