Advertisement
andreisophie

Koch snowflake

Mar 29th, 2019
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <graphics.h>
  2. #include <cmath>
  3.  
  4. #define pi 3.141592
  5.  
  6. void koch(int x1, int y1, int l, double u, int n)
  7. {
  8.     int x2=x1+(l/3)*cos(u),y2=y1-(l/3)*sin(u);
  9.     int x3=x2+(l/3)*cos(u+pi/3),y3=y2-(l/3)*sin(u+pi/3);
  10.     int x4=x2+(l/3)*cos(u),y4=y2-(l/3)*sin(u);
  11.     int x5=x4+(l/3)*cos(u),y5=y4-(l/3)*sin(u);
  12.     if (n==0)
  13.         line(x1,y1,x5,y5);
  14.     else
  15.     {
  16.         koch(x1,y1,l/3,u,n-1);
  17.         koch(x2,y2,l/3,u+pi/3,n-1);
  18.         koch(x3,y3,l/3,u-pi/3,n-1);
  19.         koch(x4,y4,l/3,u,n-1);
  20.     }
  21. }
  22.  
  23. void kochF(int x1, int y1, int l, int n)
  24. {
  25.     koch(x1,y1,l,0,n);
  26.     koch(x1+l,y1,l,-2*pi/3,n);
  27.     koch(x1+l/2,y1+l*sqrt(3)/2,l,2*pi/3,n);
  28. }
  29.  
  30. int main()
  31. {
  32.     initwindow(900, 700);
  33.  
  34.     setcolor(13);
  35.     kochF(150,200,550,4);
  36.  
  37.     getch();
  38.     cleardevice();
  39.     closegraph();
  40.  
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement