// Prog: lindenmayer.ex9.cpp
// Draw turtle graphics for the Lindenmayer
//Mario Zusag
//initial word= X
//Draws the word ETH
//rotation angle is 60 degrees
#include
#include
//POST:the word w_i^Y is drawn
void x (const unsigned int i) {
if (i>0) {
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::left(60);//+
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::left(120);//++
ifm::forward();//X
ifm::forward();//X
ifm::right(120);//--
ifm::forward();//X
ifm::right(60);//-
ifm::forward();//X
ifm::left(60);//+
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::left(120);//++
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::right(120);//--
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::right(60);//-
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::forward();//X
ifm::left(60);//+
x(i-1); //w_{i-1}^X
ifm::jump();
ifm::left(120);//++
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::left(60);//+
x(i-1); //w_{i-1}^X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::left(120);//+
x(i-1); //w...^X
ifm::forward();//X
ifm::forward();//X
ifm::jump(); //JUMP
ifm::jump(); //JUMP
x(i-1); //w...^X
ifm::forward();//X
ifm::left(60); //+
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::forward();//X
ifm::right(60);//-
ifm::forward();//X
ifm::left(60);//+
ifm::forward();//X
ifm::left(120);//++
ifm::forward();
ifm::forward();
ifm::forward();
ifm::left(60); //++
ifm::jump();
ifm::left(120);//-
ifm::forward();
ifm::right(120);
ifm::forward();
ifm::forward();
ifm::forward();
ifm::forward();
ifm::left(120);
ifm::forward();// END and Beginning at Bottom of T
ifm::jump();//jump to H
ifm::jump();
ifm::forward();
ifm::left(60);//+
ifm::forward();
ifm::forward();
ifm::right(60);
ifm::forward();
ifm::right(120);
ifm::forward();
ifm::forward();
ifm::left(120);
ifm::forward();
ifm::left(60);//+
ifm::forward();
ifm::forward();
ifm::forward();
ifm::forward();
ifm::forward();
ifm::left(120);
ifm::forward();
ifm::left(60);
ifm::forward();
ifm::forward();
ifm::right(60);
ifm::forward();
ifm::right(120);
ifm::forward();
ifm::forward();
ifm::left(120);
ifm::forward();
ifm::left(60);
ifm::forward();
ifm::forward();
ifm::forward();
ifm::forward();
ifm::forward();
}
}
int main () {
std::cout << "Number of iterations =? (you see the effect only with 1,2,3) ";
unsigned int n;
std::cin >> n;
// draw w_n = w_n(F)
x(n);
return 0;
}