// Informatik - Serie 11 - Aufgabe 127
// Autor: Rafael Benz
// Prog: BenzRafael.cpp
// Draw turtle graphics for the lindenmeyer system with production
// F -> F+FF+F-[-F+F-FF]-FFF-F+FFF-F, initial word f and rotation
// 5 iterations take about 10 seconds
// angle 90 degrees.
#include
#include
// POST: the word w_i^F is drawn
void f (const unsigned int i) {
if ( i == 0 )
ifm::forward(); //F
else {
f(i-1); // w_(i-1)^F
ifm::right(90); // +
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
ifm::right(90); // +
f(i-1); // w_(i-1)^F
ifm::left(90); // -
ifm::save(); // [
ifm::left(90); // -
f(i-1); // w_(i-1)^F
ifm::right(90); // +
f(i-1); // w_(i-1)^F
ifm::left(90); // -
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
ifm::restore(); // ]
ifm::left(90); // -
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
ifm::left(90); // -
f(i-1); // w_(i-1)^F
ifm::right(90); // +
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
f(i-1); // w_(i-1)^F
ifm::left(90); // -
f(i-1); // w_(i-1)^F
}
}
int main() {
std::cout <<"Number of iterations =? ";
unsigned int n;
std::cin >> n;
// draw w_n = w_n^F
ifm::left(90); //look up
f(n); // w_n^F
return 0;
}