Miałem ostatnio kolosa z PI i mieliśmy w pseudokodzie narysować fraktal używając komend turn(kat) , move(dlugosc) oraz rekurencji.W domu używałem do ćwiczenia fraktali biblioteki http://apcsteacher.com/reference/cpp/turtle_setup.htm.
Mieliśmy narysować takie drzewo gdzie funkcja jako argument pobiera stopnień rozgałęzienia oraz długość gałęzi początkowej.
Ja napisałem takie coś
#include "turtle.h"
void rysuj(turtle t,double bok,int n);
double k = 0.5;
int main()
{
turtle t;
rysuj(t,100,4);
t.waitForMouseClick();
return 0;
system("pause");
}
void rysuj(turtle t,double bok,int n)
{
if(n>0)
{
t.turn(90);
sleep(200);
t.move(bok);
rysuj(t,bok*k,n-1);
t.turn(180);
sleep(200);
t.move(2*bok);
rysuj(t,bok*k,n-1);
}
}
I na komputerze wszystko mi działało jednak dostałem 3.
Byłem u Pani doktor się odwoływać ale ona stwierdziła
Sprawdziłam Pana (i pozostałych z Państwa) algorytm w Javie. Efekty są w załączniku.
Nie wiem na jakiej zasadzie działa biblioteka do C++, której Państwo użyli...ale nie jest to zgodne z zasadami rekurencyjnego rysowania...
Według niej kod powinien wyglądać tak:
WYWOŁANIE alg.koloTree(100, 3, 90, (float)0.7);
public void koloTree(int bok, int n, int alpha, float dim ){
if (n < 1) {
return;
}
right(alpha);
forward(bok);
koloTree((int)(bokdim), n-1, alpha, dim);
right(2 alpha);
forward(2bok);
koloTree((int)(bokdim), n-1, alpha, dim);
back(bok); right(90);
}
I teraz mam pytanie czy biblioteka której ja używałam w rzeczywiście nie rysuje zgodnie z zasadami rekurencyjnego rysowania ?