Płatki śniegu posiadają bardzo ciekawą i symetryczną budowę. Każdy kto choć raz przyjrzał się płatkowi z pewnością wie, że ich budowa wydaje się całkiem skomplikowana jak na zwykły biały okruszek lecący z nieba. W tym artykule zostanie przedstawione jak krok po kroku zacząć rysować coraz bardziej skomplikowane płatki śniegu.
Płatek śniegu ma sześć ramion od której odchodzą krótsze odnogi. Ze względu na swoją budowę posiada 3 osie symetrii. Oto przykładowy płatek śniegu:
Jak można zauważyć płatek składa się z sześciu identycznych części. Na każdym z ramion zostały dorysowane identyczne odgałęzienia po obu stronach o różnej wielkości.
Przedstawione funkcja płatek rysuje sześć identycznych części i każda z nich polega na podzieleniu odcinka na trzy części narysowaniu odnóg poprzez wywołaniu funkcji ramie(), a następnie powrotu do punktu z którego się zaczęło. Funkcja ramie() rysuje taki sam odcinek o długości a po lewej i prawej stronie.
Płatek jest rysowany po wywołaniu przykładowo:
Chociaż płatki zawsze mają sześciokątny kształt to czemu nie narysować np. pięciokątnego? Funkcja będzie teraz przyjmować liczbę n - ile gałęzi narysować oraz odl - listę, która będzie określać jak duże mają być ramiona. Będą to liczby z przedziału [0, 1] i będą mnożone przez aktualną długość gałęzi r. Zakładamy, że kolejność pomiędzy kolejnymi ramionami jest taka sama.
Płatek nie przypomina niczego co można było dostrzec podczas długich, zimowych wieczorów! Jednak, aby taki efekt osiągnąć należy zmodyfikować dotychczasową funkcję płatek(). Będzie teraz przyjmować nie jeden, a trzy argumenty.
Na początku program oblicza na ile odcinków jest dzielone ramię, a następnie dla każdej gałęzi i każdego ramiona rysuje je, dorysowywuje koniec gałęzi, a następnie wraca do środka płatka śniegu i obraca się, aby narysować kolejną gałąź.
Płatek jest rysowany po wywołaniu przykładowo:
Dotychczasowe płatki wydają się proste w budowie. Przydałoby się je teraz skomplikować przykładowo do takiej postaci:
Jak można zauważyć każde ramię jest jakby nową gałązką od której odchodzą kolejne ramiona. Na tej samej zasadzie są budowane fraktale, ale one tak naprawdę rysuję nieskończenie, więc trzeba ograniczyć ilość podpod...gałązek pewną wartością. Do funkcji będzie przekazywana w postaci argumentu st. W każdym kolejnym wywołaniu wartość będzie malała o 1, a kiedy osiągnie 0 zostanie narysowana jedynie prosta kreska. Nowa wersja funkcji ramie() wygląda następująco:
W powyższym kodzie została zawarta z funkcji płatek() pętla , która rysowała kolejne ramiona gałązki. Z tego powodu nie jest już potrzebna w niej i kod upraszcza się do:
Tym razem narysowanie płatka jest identyczne jak poprzednio:
Pomysłów na rysowanie płatków śniegu jest mnóstwo, a każdy z nich pozwola utworzyć unikatowe dzieło sztuki! Gorąco polecam spróbować napisać samemu funkcję, która będzie rysować płatek śniegu według pewnego schematu.