
Toto rozhodnutí musíme udělat, abychom při geometrických operacích (průniky, slučování, ...) věděli s čím vlastně pracujme a podle toho tyto operace vytvořili. K problému se můžeme postavit ze dvou směrů:
- Podporovat pouze skutečná, geometricky platná tělesa.
- Chápat těleso jako souhrn bodů a stran bez nutnosti splnění všech matematických podmínek.
Protože v našem CADu chceme tělesa využívat i pro různé grafické efekty (například rozpad na strany), rozhodl jsem se, že tělesa budeme vnímat spíše jako souhrn stran než jako čistě geometrické objekty. Z toho plyne, že náš CAD musí počítat nejen s klasickými tělesy, ale i s tělesy "nestandardními". A na ta je potřeba myslet už při návrhu, včetně jejich detekce a testování.
Neuzavřené těleso
První zvláštní situací je neuzavřené těleso — takové, kterému chybí strana, nebo v ní má díru. Nemá tedy jednoznačně definovaný vnitřek. Představte si krychli, ze které chybí kus stěny. Strany modelu jsem opatřil "hover efektem", takže si snadno ověříte, že v pravé stěně je skutečná mezera, nikoliv jen průhledná plocha.
Na tomto příkladu je zajímavé i to, že hover efekt funguje z obou stran divu, což u běžného HTML elementu není úúlně zřejmé.
Rub a líc
Další neregulární těleso vidíme v ukázce "Krychle s převrácenou stranou". Na první pohled žádný problém vidět není. Ovšem při bližším zkoumání je vidět, že stěna "R." je obráceně, "lícem dovnitř" a abychom nápis na ní mohli přečíst potřebovali bychom být "uvnitř krychle". Takže na rozdíl od klasické geometrie budeme v našem CADu mít něco jako rub a líc strany, což potřebujeme minimálně proto, abychom určili z které strany je písmo na HTML elementu čitelné.
Nastavení rubu a líce strany musíme tedy umět v našem CADu nějak měnit, musíme umět detekovat zda těleso má všechny strany stejným směrem a přizpůsobit tomu geometrické operace, které s tělesem budeme dělat.
Sebeprotínající se těleso
Dalším neregulárním tělesem, které musíme detekovat je těleso, kde nějaké strany protínají nějaké jiné. I takovéto těleso samozřejmě musíme detekovat, abychom toto vzali na zřetel třeba při počítání průniku těles.
Strany jsou opět doplněny hover efektem. který ukazuje, že se jedná opravdu o strany přes celou výšku tělesa a v některých místech zvenčí vidíme rub strany a v jiných její líc.
Těleso vzniklo ze sedmibobokého jehlanu, který jsem rozdělil rovinou rovnoběžnou se základnou a následně jeho vrchol posunul pod základnu.
Dva rohy v jednom vrcholovém bodu tělesa, atd...
Další situace, které bychom měli detekovat je pokud jeden vrcholový bod tělesa společný pro dva rohy, či pokud jsou mezi nějakými body tělesa dvě hrany, různé plochou dotýkající se strany, atd... To vše bude mít zásadní vliv pro počítání geometrických operací.
PS: Všechny příklady jsou čisté CSS bez JS
Nesouvisející části stěn
V této ukázce vidíme dva duté osmistěny, které vypadají podobně, ale konstrukčně se liší. U jednoho řez vytvořil jednu velkou stěnu, u druhého čtyři samostatné. Díky hover efektu si můžete tento rozdíl snadno ověřit.
Při konstrukci těles musíme takové jemné detaily brát v úvahu. Například pro správnou reakci na kliknutí nebo hover na jednotlivé části.
Obecnější přístup je náročnější, ale otevírá cestu k nečekaným možnostem i větší kreativitě.
A příštím článku si ukážeme, že náš CAD nebudou jen staticky umístěná tělesa