IFSMaker
IFSMaker je softwarový nástroj generující fraktály typu IFS (bude popsáno dále). Pracuje s vlastním formátem FRC, který lze ukládat, načítat a exportovat do dalších nástrojů.
- nejnovější verze: 1.0c
- dostupná verze: 1.0c
- vývoj softwaru: 2008-2010
- autoři: Miloslav Čapek, Pavel Hazdra, Pavel Hamouz, Jan Eichler (všichni K13117, katedra elektromagnetického pole)
- kontakt: miloslav.capek@fel.cvut.cz
Požadavky a specifikace
Program vyžaduje spuštěný Matlab, požadovaná je verze Matlab2009a a výše. Program je postaven na objektovém paradigmatu definovaném firmou Mathworks (více zde), obsahuje více než 130 funkcí a 200 nested funkcí. Jedná se o rozsáhlejší kód (>15000 řádek).
Pro nekomerční využití je tento program zdarma. Součastně s tím žadají autoři případné uživatele o zaslání vlastních námětů a zkušeností s prací s IFSMakerem.
Teorie
V této sekci se budeme krátce věnovat teorii, tj. pojmům fraktál, iterované funkční systémy a možnostem výpočtu tzv. fraktální dimenze.
Fraktály
Na otázku co je to fraktál, existují obecně dvě často společně uváděné definice. První tvrzení pochází od B.B.Mandelbrota, druhé je čistě matematickou definicí.
- Fraktál podle B.B.Mandelbrota: Fraktálem je každý objekt, jehož topologická dimenze se liší od dimenze fraktální (Hausdorffovy).
- Exaktní definice fraktálu: Fraktál je objekt, jehož geometrická struktura se opakuje v něm samém. Fraktály se dělí na soběpodobné a soběpříbuzné.
V dalším bude tedy nezbytné vymezit pojem topologickéa fraktální dimenze.
IFS systémy
Iterované funkční systémy (Iterated Function System) jsou jedním z typů fraktálů. Jsou generovány pomocí jednoduchých afinních transformací, které jsou iterativně prováděny nad množinou počátečních bodů. Generace je velice názorná a rychlá, proto jsou tyto typy fraktálů využívány v počítačové grafice, ale i v umění a dalších oborech.
Matematicky lze dláždění fraktálu postihnout pomocí tzv. Hutchinsonova operátoru. Definujme tedy soběpodobnou podmnožinu
obecně
-rozměrného euklidovského prostoru
tak, že existuje konečně mnoho kontraktivních, příp. i afinních zobrazení (transformací):
takových, že dále platí:
přitom pro libovolná
obsahuje průnik
jen konečný počet prvků (nebo je prázdný). Na potenci
je zobrazeními definován operátor
který se nazývá Hutchinsonův operátor.
Množina definovaná pomocí tohoto operátoru má několik velmi zajímavých vlastností:
- Soběpodobná množina vzniká opakováním sebe sama při určité transformaci (změna měřítka, rotace, posunutí, zkosení …).
- Soběpodobné množiny jsou invariantní vůči změně měřítka. Při libovolném zvětšení či zmenšení vypadají stejně (viz obrázky níže).
- Soběpodobná množina vzniká sama ze sebe, resp. vzniká opakováním motivu.
Z výše uvedeného vidíme, jakým způsobem je IFS generováno (Hutchisonůn operátor) a jaké podmínky musíme splnit (kontrakce, atd.). Základní objekt (zadán body, v podstatě jde o inicializační polygon) je v každé iteraci transformován jedním nebo několika zobrazeními a vznikají tak nové podmnožiny. Tyto podmnožiny jsou rekurzivně využity pro dláždění další iterace. Princip zobrazuje následující obrázek.
První iterace vznikla díky 8 transformacím původního (čtvercového) objektu. Další iterace vznikají transformováním iterace předešlé. Díky kontrakci jsou velikosti transformovaných objektů vždy nanejvýše stejně velké jako vzor, velikost koláže tedy neroste. Základní objekt může být libovolného tvaru a nebudeme se jím více zabývat. (Afinních) transformací je několik základních typů, krátce se tedy o nich zmiňme.
Afinní transformace
Afinní transformace je definována vztahem:
Tato rovnice může být dále rozepsána:
Jednotlivé koeficienty matice
se uplatňují při rotaci, zkosení a změně měřítka, koeficienty matice
při posunutí. Souřadnice
a
náleží iterovanému bodu. Předchozí výraz lze upravit tak, aby celá transformace byla v jedné matici a kombinace transformací šla získat jejich násobením. Program IFSMaker využívá pro popis transformací často citované transkripce:
, kde význam jednotlivých parametrů je určen podle následujícího obrázku:
Z toho je vidět, že mezi afinní transformace počítáme:
- posun o danou vzdálenost ve směru x/y
- změna měřítka (horizontálního Mx, vertikálního My nebo Mx a My současně)
- horizontální nebo vertikální zešikmení (nebo současně)
- rotace kolem daného úhlu
Pozn.: Pro bližší informace o tomto i následujícím tématu je čtenář odkázán do bakalářské příp. diplomové práce M.Čapka (ke stažení na domovských stránkách).
Fraktální dimenze - výpočet
Jelikož fraktální objekty jsou typicky definovány pomocí neceločíselné dimenze, je vhodné dokázat tuto dimenzi určit. K tomu slouží celá řada technik, nejznámější z nich je potom box-counting. Jak tato metoda pracuje?
Vše je založeno na výpočtu mřížkové dimenze, jejíž výpočet je relativně jednoduše implementovatelný a rychlý. Je založena na měření s měřítkem
, které se postupně zmenšuje k nule. Situace je podobná, jakou sledoval Richardson s měřením obvodu Korsiky. Nepravidelnosti menší, než je rozměr měřítka zanedbáváme. Procházíme postupně celou množinu (pobřeží) a počítáme, kolik délek
(pásem, metrů, centimetrů) je potřeba pro její úplné pokrytí.
Jak lze dokázat, pro velkou třídu (kam spadají i IFS) množin podává mřížková dimenze stejné výsledky jako Hausdorffova dimenze. Je-li neprázdná ohraničená podmnožina
a
je nejmenší počet množin s diametrem
, které pokrývají množinu , potom definujeme dolní a horní mřížkovou dimenzi množiny následovně:
Pokud se
, mluvíme o mřížkové dimenzi:
Kdyby byla množina prázdná nebo neohraničená, hrozí hodnoty
příp.
ve jmenovateli. Tvar množin i jejich rozměr
je volitelný, ale pro naše účely je nejvhodnější pracovat s mřížkou postupně se zjemňujících čtverců se stranou
. Takový systém je na obrázku níže.
Zároveň platí následující vztah mezi
a
pro
:
Ve velké části případů (IFS nevyjímaje) se Hausdorffova a mřížková dimenze přímo rovná, nicméně je i skupina objektů, kde striktně platí uvedená nerovnost.
Popis IFSMakeru
IFSMaker implementuje popis IFS fraktálů uvedený výše. Pro správné vygenerování požadovaného fraktálu je nezbytné zadat množinu základních bodů, požadované afinní transformace a počet iterací. Přesný popis ovládání je uveden v následující části, dále jsou pak popsány jednotlivé utility IFSMakeru.
Počet bodů zakládního objektu není v zásadě omezen. Body lze dodatečně mazat, přidávat a měnit jejich polohu. Postup je uveden níže. Vybraný inicializační polygon je potřeba vytvořit a označit jako výchozí pro generaci IFS. Do polygonu lze vybrat jen určité, všechny nebo žádné body:
Polygonů může být více, avšak jako inicializační polygon pro IFS může být vybrán vždy jen jeden.
Počet transformací není rovněž omezen, přičemž jen vybrané transformace jsou zahrnuty do výsledné koláže. Je nutné uvážit pouze afinní (=kontraktivní) zobrazení.
Iterace jsou přednastaveny defaultně, lze je však měnit, a to jak celkový počet vygenerovaných iterací, tak i počet zobrazených iterací. Z důvodu názornosti koláže a rychlosti vykreslovaní je počet iterací omezen na 3, tento počet lze však dodatečně změnit v Matlabu editovaním pole FRC.iter.
Pohled na počáteční body a transformace a na vygenerované fraktály různé iterace poskytují následující obrázky.
Všechny zobrazené příklady jsou součástí IFSMakeru v adrešáři !source.
Ovládání IFSMakeru
Uživatelským komfortem jsme se snažili přiblížit komerčním programům - grafické prvky lze vybírat rámečkem myši (windows), společně s klávesou SHIFT přidávat, s CTRL ubírat. Rozměry plátna i gridu lze přednastavit do slotů. Ty vyvoláme ikonou (viz video tutoriál na konci této stránky) příp. klávesami 1-4. K dispozici je grid podobný jako v programu CorelDraw. Ten lze využít na konstrukci bodů, pomoc. čar (není dokončeno), pro měření vzdáleností apod. (v další verzi).
Přiblížení lze realizovat kolečkem myši nebo klávesami +/- (lze navíc nastavit velikost přírustku; defaultně nastavena o jedno políčko gridu). Posun po canvasu provádíme šipkami (krok nastavitelný). Pozice kursoru se vypisuje v pravém horním rohu. Pod tím se zobrazuje aktivovaný snap režim, včetně souvisejících informací (k čemu je kursor přichycen). V pravém dolním rohu je drobná konzole, určená pro komunikaci směrem k uživateli (dokončené úkoly, chyby apod.).
Snap režimy, známé např. z AutoCadu, významně usnadňují práci s grafikou. Na výběr je trojice režimů: Snap free, Snap to Grid a Snap to Points. Vzdálenosti přichycení lze nastavit. Zobrazení všech těchto informací na plátně jsou volitelné.
Utility IFSMakeru
Nastavení plátna
Rozměry plátna a velikost mřížky lze nastavit jak ručně, tak předvolit jednotlivé hodnoty v nejvýše třech slotech, které jsou trvale uloženy v paměti IFSMakeru. Práce s kreslícím plátnem je zobrazena i v tutoriálu níže. Klikem na žlutou ikonku Opt., příp. stiskem klávesy „4“ je otevřen správce slotů. V těchto slotech lze nastavit požadované rozměry (šipky « a » umožňují zkopírování zadaných hodnot do sousedního slotu. Požadované rozměry plátna jsou potom vyvolány klikem na žluté ikonky '1' / '2' / '3'. Sloty lze aktivovat i pomocí kláves „1“ / „2“ / „3“.
Modifikace
Tato utilita umožňuje provést všechny standartní modifikace (změna atributu objektů, posun, změna měřítka, rotace) nad vybranou množinou bodů. Nejprve je nutné pomocí myši vybrat body. To lze učinit i pomocí operace Selection - můžeme vybrat všechny nebo pouze některé body. Tyto body lze odznačit, smazat nebo zneviditelnit. Seznam všech vybraných bodů lze zobrazit kliknutím na List.
Máme-li vybrány body, nastavíme požadovanou operaci v okně Modification/Options (Modification setting)
dále můžeme zvolit, zda se upraví současné body nebo jejich nově vzniklé kopie. Lze volitelně nastavit krok modifikace, a tím např. sledovat změnu koláže při posuvu o jistou vzdálenost v 10 krocích. Nyní můžeme modifikaci uložit nebo zvolit Apply, což je ekvivalent náhledu.
Úprava transformací
V některých případech je nutné prozkoumat případy, kdy se u jedné nebo více transformací mění jeden z koeficientů, příp. chceme fraktál upravit do požadovaného tvaru. Pro tyto účely slouží jemné interaktivní dolazování transformací. Nejprve vybereme požadované transformace zaškrtnutím pole Tune v tabulce transformací. Dále zvolíme koeficient transformace/í, ktery bude lazen a klikneme na sousední tlačítko Tune. Otevře se rozhraní, umožňující po nastavitelných krocích měnit vybrané koeficienty transformací.
FRC formát
FRC formát plně popisuje daný IFS fraktál. S ohledem na počet polí FRC byl navržen multidimenzionární optimalizér PSOptimizer i modální řešiče EvalInFem a TCMapp. Každý fraktál se skládá z následujících polí:
| Název pole | Typ/hodnota | Popis |
FRC.base | matice (n,2) | matice bodů základního útvaru (n ~ počet bodů) |
FRC.tran | matice (m,6) | matice afinních transformací (m ~ počet transformací) |
FRC.iter | matice (1,3) | počet iterací ve formátu [it1 it2 it3] |
FRC.type | 'pntstrns' | defaultní string řetězec, označuje typ proměnné |
Proměnnou lze tedy vytvořit příp. editovat i mimo IFSMaker.
Propojení s dalšími nástroji
Výstupem generátoru IFSMaker je proměnná FRC, kterou lze využít např. jako anténní motiv. Takový motiv lze řešit jedním ze solverů, příp. dále optimalizovat. Vstup všech výše uvedených programů je zcela univerzální a přizpůsoben i specifikům fraktální geometrie (FRC formát neobsahuje výsledné polygony, ale jenom informace o typu a složení koláže - před každým řešením musí být podle zadaných údajů koláž znovu vygenerována. Výhodou je, že lze optimalizovat přímo fraktální koeficienty.).
Dále viz:
Tutoriál
Zde je k dispozici video tutoriál popisující základní práci s IFSMakerem.
Další vývoj
Práce na této aplikaci byly dočasně zastaveny, neboť současný stav postačuje pro generaci vhodných anténních kandidátů. Výhledově však počítáme s těmito úpravami:
- možnost uložit celkový stav IFSMakeru vč. nastavení
- možnost práce s polygony, nikoliv nutně s IFS fraktály - umožní generovat složité struktury složené pouze z polygonů
- přímé propojení s Comsolem a dutinovým modelem - rychlé orientační zjištění rezonanční frekvence útvaru, jeho celistvosti a spektra módů
- utilita zahrnující výpočet fraktální dimenze pomocí metody box-counting
- další podpůrné funkce (pomocné čáry a kolmice, měření vzdálenosti a úhlů)
V souvislosti s touto problematikou nabízíme rovněž celou řadu témat na semestrální projekty, příp. bakalářské a diplomové práce.
— Miloslav Čapek 2010/11/27 14:19






