Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. class Sierpinski {
  4. public:
  5. void curve( int order, double length, int angle)
  6. {
  7.     if ( 0 == order ) {
  8.         cout << length << " " << length << " rlineto" << endl;
  9.     } else {
  10.        
  11.         curve(order - 1, length / 2, - angle);
  12.         cout <<angle << " rotate" << endl;
  13.         curve( order - 1, length / 2, + angle);
  14.         cout << angle <<" rotate"<<endl;
  15.         curve( order - 1, length / 2, - angle);
  16.     }
  17. }
  18. void sierpinski_arrowhead_curve( int order, double length)
  19. {
  20.     // If order is even we can just draw the curve.
  21.     if ( 0 == (order & 1) ) {
  22.         cout << "60 rotate"<<endl;
  23.         curve( order, length, +60);
  24.     }
  25.     else /* order is odd */ {
  26.         cout << "60 rotate"<<endl;
  27.         curve( order, length, -60);
  28.     }
  29. }
  30.  void draw(int order, double length) {
  31.         cout << "newpath" << endl;
  32.         cout << "100 200 moveto" << endl;
  33.         sierpinski_arrowhead_curve(order, length);
  34.         cout << "stroke" << endl;
  35.     }
  36. };
  37. int main(void) {
  38.     Sierpinski s;
  39.    
  40.     s.draw(2 ,100);
  41.     return 0;
  42.    
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement