Department of Computer Science | Institute of Theoretical Computer Science | CADMO

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

// 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; }