void curbaHilbert(double lungime, int nivel, CPunct &p, CVector &v, int d) { if (nivel == 0) { } else { v.rotatie(d * 90); curbaHilbert(lungime, nivel - 1, p, v, -d); v.deseneaza(p, lungime); p = v.getDest(p, lungime); v.rotatie(-d * 90); curbaHilbert(lungime, nivel - 1, p, v, d); v.deseneaza(p, lungime); p = v.getDest(p, lungime); curbaHilbert(lungime, nivel - 1, p, v, d); v.rotatie(-d * 90); v.deseneaza(p, lungime); p = v.getDest(p, lungime); curbaHilbert(lungime, nivel - 1, p, v, -d); v.rotatie(d * 90); } }
void afisare(double lungime, int nivel) { CVector v(0.0, 1.0); CPunct p(0.0, 0.0); curbaHilbert(lungime, nivel, p, v, 1); }