algorytm rysujacy fraktal

0

potrzebny mi algorytm rysujacy fraktal taki jak <url src="http://www.wojownicyniebios.boo.pl/aaa.GIF">tutaj</url>
siec przeszukalem

<url>www.wojownicyniebios.boo.pl/aaa.GIF</url>

0

Nie podam Ci wprawdzie gotowego algorytmu ale moge powiedzieć jak ja bym to zrobił:
Przede wszystkim trzeba stwierdzić co w kolejnych krokach ma być wykonywane. Najpierw następuje narysowanie linii o pewnej dlugości x pod kątem 270 stopni (jeśli przybrać sobie, że rysując w paro to 0 stopni w dół 90 stopni w lewo 180 stopni itd.). Jeśli linia zostanie narysowana. Następuje stworzenie nowego pisaka, nadajmy im nazwy pisak1 i pisak2. Pisak jeden narysował linie o dlugosci x pod kątem 270 stopni. A wiec teraz przypisujemy te wartosci do pisak2. Teraz przed wykonaniem kolejnego kroku. Trzeba obrocic pisaki jeden o -45 stopni a drugi o +45 stopni, a dlugosc linii podzielic na 2. W ten sposob, linie beda coraz ktrotsze a kąt miedzy kolejnymi liniami zawsze będzie 90 stopni. Dodatkowo trzeba ustalić ilość etapów, bo mozna by tak rysowac w nieskonczonosc (teoretycznie).

Teraz od strony programistycznej.

  1. Nalezy stworzyć klasę (strukturę) np.
class pisak
{
     int x; //dlugosc rysowanej linii
     double kat; //kat pod jakim bedzie rysowana linia
} ;
  1. Natepnie na wejsciu nalezy stworzyć nowy pisak, najlepiej bedzie sie chyba posluzyc tablica pisakow gdyz beda tworzone nowe. Wielkosc tablicy bedzie rowna (ilosc etapow). Tak wiec jesli na poczatku pobierzemy od uzytkownika takie informacje jak: ilośc etapów, długość linii, kąt początkowy pisaka; to nalezy wykonac mniejwiecej taki kod.
int dlugosc;
int kat;
int iloscetapow;
// te 3 zmienne sa inicjalizowane przez uzytkownika.

pisak mojepisaki = new pisak [iloscetapow] ; //lub przy uzyciu funkcji malloc()

mojepisaki[0].x = dlugosc;
mojepisaki[0].kat = kat;
  1. Nastepnie nalezaloby wykonac petle for ktora wykonywala by kolejne etapy rysowania.
for(int i = 0; i < iloscetapow; i++)
{
// tu odbywa sie rysowanie pisakami

/*następnie za kazdym przebiegiem petli nalezy utworzyc ("i" do kwadratu) nowych pisakow z ktorych kazdy bedzie mial odpowiednio zmienione dlugosci i katy.*/
}

Aha analizujac to co napisalem zapomnialem jeszcze ze w klasie "pisak" powinna być jeszcze przechowywana pozycja x i y pisaka, ktora tez uzytkownik powinien podac na wejsciu.

Zapewne to co napisalem troche wyjasnia wykonanie tego algorytmu, ale mimo wszystko moga pojawic sie jakies problemy. Polecam sprobowac wykonac to co rozumiesz, a jesli bedziesz mial jakies problemy to pisz wtedy postaram/y się pomoc je rozwiazac.
Pozdrawiam

0

mozna by probowac ale jest to srednio dobre rozwiazanie, bo dla stopnia zlozonosci fraktala>6 to juz sa setki struktur. gdzies slyszalem ze najlepiej to zrobic na rekurencji, ale nie wiem zupelnie jak sie za to zabrac

0

thx a lot

1 użytkowników online, w tym zalogowanych: 0, gości: 1