IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Mandelbrotova množina v Game Makeru

Síce nie je veľmi dobrý nápad skúšať programovať v Game Makeru výpočty náročné na rýchlosť, ale ja veľmi rád porušujem pravidlá a tak som prinútil GM, aby počítal grafické znázornenie jedného z najznámejších fraktálov - mandelbrotova množina.

Fraktály sú zaujímavou matematickú záležitosťou, čo je skoro protirečenie pre každého, kto si spomenie na niektorú z nezáživných hodín matematiky na škole. Ale fraktály sú pomerne jednoduché, ľahko predstaviteľné a ich grafické znázornenie býva jednoducho povedané - krásne. Tvorí štruktúry podobajúce sa v skutočnom svete prírodnom výtvorom. Sú založené na opakujúcich sa soběpodobných (pozn. Terminus technicus) vzoroch tak ako možno vypozorovať na nepravidelných okrajoch roztřepeného listu, lomu v kameni alebo na pramienkoch vody. Z matematického hľadiska ide obvykle o komplexné čísla spĺňajúce určitú podmienku pri nejakom konečnom počte vykonávaných posunov, rotáciou a iných transformácií. U Mandelbrot ide o Z = (Z * Z) + C a podmienka je | Z |> 0.

Ak vás fraktály zaujali, ale stále tomu nerozumiete, môžete skúsiť pekný sdracův článok

http://www.itnetwork.cz/...tovy-mnoziny práve o Mandelbrot fraktálu.

Program vytvorený Game Makeru je veľmi jednoduchý a taky celkom pomalý. Po spustení sa chvíľu nič nedeje a potom naskočí sivá plocha. Klávesom PageUp necháte spočítať dáta. Po nejakej dobe sa vám v v priečinku programe vytvorí dátový súbor. Pri každom ďalšom prípadnom spustení môžete tieto dáta načítať bez ďalšieho výpočtu klávesom PageDown. Ak sú dáta načítané, klávesou Space ide meniť zobrazenie fraktálu. V priloženom programe sú vstavané tri podoby grafického prevedenia Mandelbrot fraktálu. K výpočtu je použitý rekurzívne skript, ktorý vracia či je alebo nie je bod v množine a počet iterácií. Kto by nevedel, čo to znamená, tak je to veľmi jednoduché. Rekurzívne je taká funkcia, ktorá vo svojom tele volá seba samého. A počet iterácií je vlastne hĺbka zanorenia. Ďalšie podrobnosti napr. Tu:

http://cs.wikipedia.org/...A1n%C3%AD%29

http://cs.wikipedia.org/...Frakt%C3%A1l...

A teraz už k samotným vyobrazením fraktálu Mandelbrot:
Prvá podoba je tak klasická, že už klasickejšie snáď byť nemôže. Na základe počtu iterácií sa mení hodnota Hue každého spočítaného bodu. Hue je položka farebného systému HSV, ktorým možno určiť farbu aj v Game Makeru (alternatíva modelu RGB). Druhý typ grafického znázornenia vykresľuje kružnice o veľkosti, ktorá zodpovedá počtu iterácií. Tretí a posledný typ kreslí vektory do nulového bodu a farbí je podobne ako u prvého variantu. Najpoužiteľnejší je asi samotný skript, ktorý môžete použiť v akomkoľvek ďalšom svojom zobrazenie, preto je uložený aj zvlášť ako textový súbor. Pribalená sú aj předpočítaná dáta, takže stačí PageDown a Space.

Rozhodne sa vyzbrojte trpezlivosťou - každá akcia trvá rádovo sekundy aj na rýchlych počítačoch. Ak sa nájde niekto šikovný, môže byť slušnú výzvou optimalizácie rýchlosti a GUI k zmene parametrov výrezu fraktálu.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 175x (1.23 MB)
Aplikácia je vrátane zdrojových kódov v jazyku GameMaker

 

Všetky články v sekcii
Game maker - Ostatné
Článok pre vás napísal TomBen
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
-
Aktivity