Mandelbrotova množina v Game Makeru

Ostatní jazyky GameMaker Ostatní 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ženo 170x (1.23 MB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal TomBen
Avatar
-

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
Hra s dvěma a více jazyky.
Miniatura
Všechny články v sekci
GameMaker - Ostatní
Miniatura
Následující článek
Collision triangle - GameMaker

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!