Advertisement
andreisophie

Sierpinski Carpet

Apr 1st, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <graphics.h>
  2. #include <algorithm>
  3.  
  4. void square(int xc, int yc, int l)
  5. {
  6.     int x1=xc-l/2,y1=yc-l/2;
  7.     int x2=xc+l/2,y2=yc-l/2;
  8.     int x3=xc+l/2,y3=yc+l/2;
  9.     int x4=xc-l/2,y4=yc+l/2;
  10.     line(x1,y1,x2,y2);
  11.     line(x2,y2,x3,y3);
  12.     line(x3,y3,x4,y4);
  13.     line(x4,y4,x1,y1);
  14. }
  15.  
  16. void Sierpinski(int xc, int yc, int l)
  17. {
  18.     square(xc-l,yc-l,l/3);
  19.     square(xc,yc-l,l/3);
  20.     square(xc+l,yc-l,l/3);
  21.     square(xc+l,yc,l/3);
  22.     square(xc+l,yc+l,l/3);
  23.     square(xc,yc+l,l/3);
  24.     square(xc-l,yc+l,l/3);
  25.     square(xc-l,yc,l/3);
  26.     if (l>9)
  27.     {
  28.         Sierpinski(xc-l,yc-l,l/3);
  29.         Sierpinski(xc,yc-l,l/3);
  30.         Sierpinski(xc+l,yc-l,l/3);
  31.         Sierpinski(xc+l,yc,l/3);
  32.         Sierpinski(xc+l,yc+l,l/3);
  33.         Sierpinski(xc,yc+l,l/3);
  34.         Sierpinski(xc-l,yc+l,l/3);
  35.         Sierpinski(xc-l,yc,l/3);
  36.     }
  37. }
  38.  
  39. int main()
  40. {
  41.     initwindow(1900, 1000);
  42.  
  43.     const int xc=getmaxx()/2,yc=getmaxy()/2,l=std::min(getmaxx(),getmaxy())-50;
  44.  
  45.     square(xc,yc,l);
  46.     square(xc,yc,l/3);
  47.     Sierpinski(xc,yc,l/3);
  48.  
  49.     getch();
  50.     cleardevice();
  51.     closegraph();
  52.  
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement