4. Geometrie těles pro CAD

Ilustrační obrázek k článku: Geometrie těles pro CAD
Jestliže jsme se rozhodli, že budeme psát CAD, tak si ovšem před jeho vytvořením musíme definovat to jaká tělesa budeme podporovat.

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ů:

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í.

Krychle s dírou

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é.


Krychle s převrácenou stranou

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 lomený jehlan

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.


Vrchol s dvěma rohy, dotýkají se hrany

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í.


Oříznuté duté osmistěny
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

Předchozí   Následující