Skocz do zawartości

[C++ & Allegro] Fraktal-obrót o kąt


effendi

Polecane posty

Witam wszystkich forumowiczów. Przedstawię Wam swój problem i mam nadzieję, iż znajdzie się ktoś, kto potrafi mi pomóc :) Moim zadaniem jest napisanie programu, który będzie rysował fraktal-wybrałem sobie na początek krzywą von Kocha. Do rozwiązania problemu używam C++ i biblioteki graficznej Allegro. W końcu dochodzę do sedna: nie mam pomysłu, w jaki sposób rysując poszczególne odcinki krzywej obracać się o dany kąt, tzn. po narysowaniu boku muszę np. obrócić się o kąt 60 stopni, narysować kolejny bok, obrót o -120 stopni, itd... Czekam na pomysły, być może jest gotowa f-cja, której nie znam.

Link do komentarza
Udostępnij na innych stronach

Jak możesz zrobić inny fraktal to zrób trójkąt Sierpińskiego (na stronie jest kod źródłowy w OpenGL) albo dywan Sierpińskiego - jedne z najprostszych fraktali. http://fraktale.stach.org.pl/index.php/prz...e-sierpinskiego

 

Mi osobiście na wykładzie z grafiki komputerowej najbardziej podobały się drzewa Pitagorejskie :)http://fraktale.stach.org.pl/index.php/prz...a-pitagorejskie

Link do komentarza
Udostępnij na innych stronach

Problem już rozwiązałem, operując na współrzędnych. Znalazłem taki oto wzorek na współrzędne wierzchołka trójkąta równobocznego utworzonego po podziale odcinka na 3 części:

x=(x1+x2)/2 + (y2-y1)*sqrt(3)/6

y=(y1+y2)/2 - (x2-x1)*sqrt(3)/6

gdzie x1,y1 to współrzędne początku odcinka a x2,y2 - końca.

Niestety nie rozumiem jak został wyprowadzony, tzn. wiem że ukryta tu jest wysokość trójkąta równobocznego podzielona przez 3 (sqrt(3)/6) lecz nadal nie wiem skąd się wziął ten wzór :)

Link do komentarza
Udostępnij na innych stronach

  • 1 month later...

Tak, wiem, że miesiac minął, ale rzadko wchodziłem, a widzę, że problem nie rozwiązano tylko rzuca się trudne słowa jak inżynieria czy kopytko

link

mnożenie przez sqrt(3)/6 opraz dzielenie przez 2 to są wyniki funkcji trygonometrycznych sin i cos z tamtego wzoru (pewnie dla kata 60 stopni, choć wg mnie być może masz złe nawiasy), to (x1+x2) i 3 pozostałe to w mojej ocenie przystosowanie Twojego rpoblemu do tego co jest na wikipedii - tam jest obracanie wokół punktu (0,0), Ty może masz inny punkt obrotu - nie znam się na fraktalach, ale wg mnie dobrze myślę i to co napisałem powinno Ci pomóc;)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...