Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1.  
  2. #include "turtle.hh"
  3.  
  4. #include <iostream>
  5. using namespace std;
  6. class HilbertCurve {
  7. int order_;
  8. int length_;
  9. Turtle* turtle_;
  10. void left(int order) {
  11. if(order == 0){
  12. turtle_->left(180);
  13. return;
  14. }
  15. order--;
  16. turtle_->left(90);
  17. right(order);
  18. turtle_->right(90).forward(length_);
  19. left(order);
  20. turtle_->right(90).forward(length_).right(90);
  21. left(order);
  22. turtle_->forward(length_).left(90);
  23. right(order);
  24. }
  25. void right(int order) {
  26. if(order == 0){
  27. turtle_->left(180);
  28. return;
  29. }
  30. order--;
  31. turtle_->right(90);
  32. left(order);
  33. turtle_->right(90).forward(length_);
  34. right(order);
  35. turtle_->left(90).forward(length_).left(90);
  36. right(order);
  37. turtle_->forward(length_).right(90);
  38. left(order);
  39. }
  40. public:
  41. HilbertCurve(int order, int length, Turtle* turtle): order_(order),
  42. length_(length), turtle_(turtle) {}
  43. void draw() {
  44. turtle_->setup();
  45. turtle_->set_pendown(true).right(90);
  46. left(order_);
  47. }
  48. };
  49.  
  50. int main() {
  51. PSTurtle* turtle = new PSTurtle(500, 500);
  52. HilbertCurve curve(2, 20, turtle);
  53. curve.draw();
  54. delete turtle;
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement