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

Sice není velmi dobrý nápad zkoušet programovat v Game Makeru výpočty náročné na rychlost, ale já velice rád porušuji pravidla a tak jsem přinutil GM, aby počítal grafické znázornění jednoho z nejznámějších fraktálů – Mandelbrotovy množiny.

Fraktály jsou zajímavou matematickou záležitostí, což je skoro protimluv pro každého, kdo si vzpomene na některou z nezáživných hodin matematiky na škole. Ale fraktály jsou poměrně jednoduché, snadno představitelné a jejich grafické znázornění bývá jednoduše řečeno – krásné. Tvoří struktury podobající se ve skutečném světě přírodním výtvorům. Jsou založeny na opakujících se soběpodobných (pozn. terminus technicus) vzorech tak jako lze vypozorovat na nepravidelných okrajích roztřepeného listu, lomu v kameni nebo na pramíncích vody. Z matematického hlediska jde obvykle o komplexní čísla splňující určitou podmínku při nějakém konečném počtu prováděných posunů, rotací a jiných transformací. U Mandelbrota jde o Z=(Z*Z)+C a podmínka je |Z|>0.

Pokud vás fraktály zaujaly, ale stále tomu nerozumíte, můžete zkusit pěkný sdracův článek

http://www.itnetwork.cz/…tovy-mnoziny právě o Mandelbrotově fraktálu.

Program vytvořený Game Makeru je velice jednoduchý a taky celkem pomalý. Po spuštění se chvíli nic neděje a pak naskočí šedá plocha. Klávesou PageUp necháte spočítat data. Po nějaké době se vám v ve složce programu vytvoří datový soubor. Při každém dalším případném spuštění můžete tato data načíst bez dalšího výpočtu klávesou PageDown. Jsou-li data načtena, klávesou Space jde měnit zobrazení fraktálu. V přiloženém programu jsou vestavěny tři podoby grafického provedení Mandelbrotova fraktálu. K výpočtu je použit rekurzivní skript, který vrací zda je či není bod v množině a počet iterací. Kdo by nevěděl, co to znamená, tak je to velice jednoduché. Rekurzivní je taková funkce, která ve svém těle volá sebe sama. A počet iterací je vlastně hloubka zanoření. Další podrobnosti např. zde:

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

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

A teď už k samotným vyobrazením fraktálu Mandelbrot:
První podoba je tak klasická, že už klasičtější snad být nemůže. Na základě počtu iterací se mění hodnota Hue každého spočítaného bodu. Hue je položka barevného systému HSV, kterým lze určit barvu i v Game Makeru (alternativa modelu RGB). Druhý typ grafického znázornění vykresluje kružnice o velikosti, která odpovídá počtu iterací. Třetí a poslední typ kreslí vektory do nulového bodu a barví je podobně jako u první varianty. Nejpoužitelnější je asi samotný skript, který můžete použít v jakémkoli dalším svém zobrazení, proto je uložen i zvlášť jako textový soubor. Přibalena jsou i předpočítaná data, takže stačí PageDown a Space.

Rozhodně se vyzbrojte trpělivostí - každá akce trvá řádově vteřiny i na rychlých počítačích. Pokud se najde někdo šikovný, může být slušnou výzvou optimalizace rychlosti a GUI ke změně parametrů výřezu fraktálu.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 175x (1.23 MB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

Všechny články v sekci
GameMaker - Ostatní
Článek pro vás napsal TomBen
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
-
Aktivity