Geometrické algoritmy pro počítačovou grafiku

Podobné dokumenty
Geometrické vyhledávání

Autorizovaný software DRUM LK 3D SOFTWARE PRO VYHODNOCENÍ MĚŘENÍ ODCHYLEK HÁZIVOSTI BUBNOVÝCH ROTAČNÍCH SOUČÁSTÍ

FORTANNS. 22. února 2010

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

Vytvoření a úpravy geologického modelu

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

MODAM Popis okna. 2 Jana Bělohlávková, Katedra matematiky a deskriptivní geometrie, VŠB - TU Ostrava

VEKTOR. Vymyslete alespoň tři příklady vektorových a skalárních fyzikálních veličin. vektorové: 1. skalární

Úlohy na měřicím přístroji TESA 3D MICRO HITE

Výpočet sedání kruhového základu sila

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Algoritmizace prostorových úloh

GeoGebra známá i neznámá

Vzorce počítačové grafiky

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

Beton 3D Výuková příručka Fine s. r. o. 2010

Uživatelská příručka.!instalace!průvodce.!dialogová okna!program zevnitř

Úvod do programovacího jazyka Python

Návod k použití softwaru Solar Viewer 3D

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.

Programátorská příručka

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

VE 2D A 3D. Radek Výrut. Abstrakt Tento článek obsahuje postupy pro výpočet Minkowského sumy dvou množin v rovině a pro výpočet Minkowského sumy

Mechanical Calculator NOVINKY verze 8

VELIKOST VEKTORU, POČETNÍ OPERACE S VEKTORY

Výpočetní geometrie Computational Geometry

INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA

Zobrazení zdrojových dat u krabicového grafu

x 2 = a 2 + tv 2 tedy (a 1, a 2 ) T + [(v 1, v 2 )] T A + V Příklad. U = R n neprázdná množina řešení soustavy Ax = b.

Téma 5: PLANIMETRIE (úhly, vlastnosti rovinných útvarů, obsahy a obvody rovinných útvarů) Úhly 1) Jaká je velikost úhlu? a) 60 b) 80 c) 40 d) 30

si.shimano.com Uživatelský návod

Analytická geometrie lineárních útvarů

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

MODAM Popis okna. 2 Jana Bělohlávková, Katedra matematiky a deskriptivní geometrie, VŠB - TU Ostrava

Úvod do programovacího jazyka Python

Diplomová práce Prostředí pro programování pohybu manipulátorů

Plc Calculator. Nástroj pro automatizovaný návrh aplikace s automaty MICROPEL

19 Eukleidovský bodový prostor

2012, Brno Ing.Tomáš Mikita, Ph.D. Geodézie a pozemková evidence

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

b) Po etní ešení Všechny síly soustavy tedy p eložíme do po átku a p ipojíme p íslušné dvojice sil Všechny síly soustavy nahradíme složkami ve sm

Sestavy. Téma 3.3. Řešený příklad č Zadání: V databázi zkevidence.accdb vytvořte sestavu, odpovídající níže uvedenému obrázku.

GoClever Map 2.5 manuál

KONSTRUKTIVNÍ GEOMETRIE

MRBT M8. VIDITELNOST OBJEKTŮ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Bc. MARTIN MAŠTERA

Rozvoj prostorové představivosti

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 22 KONTROLA A VLASTNOSTI TĚLES]

Kinematika rektifikace oblouku (Sobotkova a Kochaňského), prostá cykloida, prostá epicykloida, úpatnice paraboly.

VYUŽITÍ GRAPHICAL USER INTERFACE PROGRAMU MATLAB PŘI VÝUCE OPTIKY

TIA Selection Tool manuál pro použití

1.1 Napište středovou rovnici kružnice, která má střed v počátku soustavy souřadnic a prochází bodem

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

Těleso racionálních funkcí

3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY

AutoCAD výstup výkresu

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

Popis ovládání aplikace - Mapový klient KÚPK

Cvičení software Groma základní seznámení

Název: Tvorba obrázků pomocí grafického znázornění komplexních čísel

FIN3D Výukovápříručka

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1

CZ.1.07/2.2.00/ )

Deskriptivní geometrie pro střední školy

P R OGR AM P R O NÁVRH VÝVAR U

11 Vzdálenost podprostorů

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

ZŠ ÚnO, Bratří Čapků 1332

Využití Rhinoceros ve výuce předmětu Počítačová geometrie a grafika. Bítov Blok 1: Kinematika

Průběh funkce 1. Průběh funkce. Při vyšetření grafu funkce budeme postupovat podle následujícího algoritmu:

2.1 Pokyny k otevřeným úlohám. Výsledky pište čitelně do vyznačených bílých polí. 2.2 Pokyny k uzavřeným úlohám

Univerzita Palackého v Olomouci, Přírodovědecká fakulta, Katedra geoinformatiky Zpracoval: Václav KUDĚLKA, Filip HRIC, Zdena DOBEŠOVÁ, Olomouc 2014

Tabulkový kalkulátor. Tabulkový kalkulátor. LibreOffice Calc 12.část

2. Vyšetřete všechny možné případy vzájemné polohy tří různých přímek ležících v jedné rovině.

Gymnázium Jiřího Ortena, Kutná Hora. Průřezová témata Poznámky. Téma Školní výstupy Učivo (pojmy) volné rovnoběžné promítání průmětna

Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem

Řešení geometrické úlohy spočívá v nalezení geometrického útvaru (útvarů) daných vlastností.

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy

Uživatelská příručka. Software DataPlot nástroj pro vizualizaci csv dat

První kroky s METEL IEC IDE

Rocrail. Nejprve: Obecný úvod. Instalace

Měření průtoku kapaliny s využitím digitální kamery

SCIA.ESA PT. Galerie obrázků

IBRIDGE 1.0 UŽIVATELSKÝ MANUÁL

Gymnázium Jiřího Ortena, Kutná Hora

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access propojení relací s formuláři a sestavami Ing.

Hledání správné cesty

Mechanical Calculator NOVINKY verze 8

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

Lokality a uživatelé

Systematizace a prohloubení učiva matematiky. Učebna s dataprojektorem, PC, grafický program, tabulkový procesor. Gymnázium Jiřího Ortena, Kutná Hora

GeoGebra Prostředí programu

ANALYTICKÁ GEOMETRIE V ROVINĚ

2.17 Webová grafika. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Hort. Vyrobeno pro SOŠ a SOU Kuřim, s.r.o.

My si nyní takovou sestavu vytvoříme na příkladu jednoduché kanceláře. Začneme vytvořením takové kanceláře.

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ

9 Kolmost vektorových podprostorů

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi

Transkript:

České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Katedra fyzikální elektroniky Informatická fyzika Geometrické algoritmy pro počítačovou grafiku Semestrální práce Autor práce: Bc. Milan Holec Školní rok: 2009/2010

Obsah 1 Úvod 4 2 Algoritmy 4 3 Program 5 4 Používání programu 6 5 Ukázka 8 2

Seznam obrázků 1 Umist ování bodů............................... 6 2 Vykreslení polygonu............................. 8 3 Triangulace polygonu............................. 9 4 Trapezoidace polygonu............................ 9 5 Konvexní obal................................. 10 6 Delaunayho triangulace............................ 10 7 Nejmenší kružnice množiny bodů...................... 11 3

1 Úvod Mezi důležité oblasti počítačové grafiky patří diskretizace obrazu na konečný počet bodů. V této práci se nebudeme zabývat samotnou prací s obrazem, ale geometrickými algoritmy pro množinu bodů, kterou můžeme obraz reprezentovat. Způsobů dikretizace je několik. Vhodným kandidátem se nabízí triangulace, která je vhodná pro strojové výpočty. Cílem bude implementovat jisté algoritmy, které zpracují zadanou množinu bodů, a jejich výstup bude možné graficky zobrazit. Pokusíme se napsat algoritmy convex hull a ear clipping použitelné pro triangulaci konvexní množiny bodů a polygonu(předpokládáme jednoduchý), respektive. Dalšímy algoritmy jsou nalezení nejmenší kružnice množiny bodů a rozdělění polygonu na lichoběžníky. Tyto zmíněné algoritmy budeme následovně kombinovat a získáme tak jednotlivé funkce programu:delaunyho triangulace, nalezení konvexního obalu množiny bodů, nalezení nejmenší kružnice množiny bodů, rozdělení polygonu na lichoběžníky a triangulace polyognu. Na závěr si ukážeme softwarovou strukturu programu a způsob, jakým ho používat. 2 Algoritmy Jak už bylo řečeno v úvodu, jádrem této práce je nastudovat a následně implementovat algoritmy. Pracovat budeme s reprezentací bodů, přímek, rovin, kružnic a trojúhelníků v kartézském souřadném systému, kdy nás bude zajímat jejich vzájemná poloha. Proto část zdrojového kódu bude mít za výstup vyhodnocení situací protínání přímek, protínání ploch, protínání přímky a plochy, vzdálenost dvou bodů, vzdálenost bodu od přímky a vzdálenost bodu od roviny. Pomocí tohoto algebraického vyjádření již můžeme implementovat jednotlivé algoritmy. Nejjednodušším z algoritmů je nalezení nejmenší kružnice obsahující množinu bodů. Tento byl implementován tzn. hrubou silou. Principem je vybrat trojici bodů, která jednoznačně určí polohu a poloměř kružnice. Pro ni pak zkontrolujeme, zda-li jsou všechny body uvnitř a uložíme její obsah, je-li menší než aktualní hodnota. Tento algoritmus má náročnost O(n 4 ). Jako další algoritmus vezmeme rozdělení polygonu na lichoběžníky. Polygon jako geometrický útvar není jednoduchý na zpracování. Proto se často dělí na části, se kterými pracuje daleko snáze. To jsou např. lichoběžníky. Tento algoritmus jsem implementovali tak, že základny vzniklých lichoběžníků jsou vodorovné s osou x. Algoritmus pracuje tak, že přetřídí body polygonu podle souřadnice y a pak každým jedním bodem proloží přímku rovnoběžnou s osou x. Podle počtu průniků nalezne základnu lichoběžníku. Po proložení všech bodů je původní polygon rozdělen na lichoběžníky a trojúhelníky. Asi nejintuitivnějším algoritmem je tzv. ear clipping [2]. Náhled na práci tohoto algoritmu je snadný. Představme si polygon vystřižený z papíru. Budeme postupně dokola ohýbat jeho rohy (konvexní body). Tím se stále zmenšuje počet hran až zůstanou jen tři. Algoritmus je jednoduchý, bereme po sobě jdoucí tři body polygonu, a když v takto vzniklém trojúhelníku žádný další bod neleží, tak ho "ohneme". Triangulace polygonu samozřejmě není jednoznačná. Posledním z algoritmů je convex hull, určený pro hledání konvexního obalu množiny bodů. V programu je implementován pro množinu bodů v trojrozměrném prostoru. Tím se dá 4

jednoduchou konfigurací bodů získat i konvexní obal množiny bodů ve 2D, což je využito v programu. Hlavní výhodu ovšem přináší pro výpočet Delaunyho triangulace množiny bodů ve 2D, tj. taková triangulace, kdy je součet úhlů všech trojúhelníků maximální. Takovou konfiguraci získáme, když promítneme do roviny konvexní obal množiny 3D bodů, tak aby v obalu byl každý z bodů. V programu je každému z bodů doplněna z-tová souřadnice z = x 2 + y 2, čímž umístíme každý z bodů do konvexního obalu ve 3D [1]. Poznamenejme, že pro výpočet Delaunyho triangulace ve 3D je třeba implementovat convex hull ve 4D. Tím bychom získali přirozenou krystalovou strukturu, podobnou té, co vzniká v přírodě. Jenom připomeňme, že tento typ triangulace se nevyužívá pouze v počítačové grafice, ale v mnoha dalších oborech. 3 Program Nyní k samotnému programu. Zdrojový kód je napsán v jazyku Java a spouštěl jsem ho na platformě Linux. Veškeré soubory lze stáhnout ve formátu zip na adrese [3]. Tento adresář obsahuje i skript RUN [4], který automaticky stáhne soubory a program spustí, a textový soubor README, kde je popsáno jak pracovat se soubory v příkazové řádce. Zdrojový kód se skládá ze dvou nezávislých částí. První z nich je GUI, grafické prostředí, které jsem vytvářel v Netbeans. Druhá část obsahuje výpočetní jádro programu. Jednotlivé algoritmy nemají vzájemně objektově orientovanou strukturu. Jejich zapouzdření zprostředkovává interface, který se stará o předzpracování vstupních dat a o úpravu výstupních dat. Tento interface představuje prostor pro práci s programem, kde uživatel volá jednotlivé algoritmy. Jednotlivé části zdrojového kódu popisuje javadoc dokument dostupný na stránce [6], kde jsou informace o vzájemném vztahu jednotlivých tříd a detailní informace o datových složkách a funkcích jednotlivých tříd. Zdrojový kód ke grafickému prostředí vygenerovaly samy Netbeans. Protože se nejedná o rozsáhlou aplikaci, je grafické prostředí jednoduché a intuitivní. Jeho používání bude popsáno v následujícím textu a bude doplněno screenshoty. 5

4 Používání programu Na Obrázku 1 je zobrazeno okno zobrazivší se po spuštění programu. Jak již bylo řečeno, algoritmy pracují s množinou bodů. Tu můžeme získat dvěma způsoby. Bud je naklikáme do vyznačeného prostoru nebo je můžeme nechat vygenerovat programem. Na takové body následně aplikujeme jednotlive algoritmy z nabídky. Dále si popíšeme jednotlivá tlačítka GUI. Obrázek 1: Umist ování bodů V horní liště okna se nachází talčítko File a tlačítko Help. První z nich slouží ke standartnímu ukončení programu, druhé po stisknutí nabízí záložku About..., která zobrazí informace o programu. Přejdeme-li přes zobrazovací prostor ohraničený hnědými okraji ke spodní části okna, vidíme zde ovládací lišty programu. Na horní liště se nacházejí zleva:pole zobrazující počet umístěných bodů, slider na určení počtu bodů, který chceme generovat (defaultně zadává deset bodů), tlačítko Add Random Points, po jehož stisknutí se náhodně umístí body, a dále dvě tlačítka, kterými přepínáme mezi režimy Set Of Points a Polygon. Posledně řečeným přepínačem se mění položky na spodní liště. Na ní se ve směru zleva nachází tlačítko Display algorithm, po jehož stisknutí se zobrazí výsledek vybraného algoritmu na zadané body. Abychom toto tlačítko nemuseli mačkat po zadání každého nového bodu, existuje vedle něj volba Automatic, která zobrazí výsledek algoritmu při přidání každého dalšího bodu. V závislosti na zvoleném režimu, Set Of Points(Množina bodů) nebo Polygon, se na lište vpravo zaobrazují odpovídající algoritmy. Pro případ Set Of Points(Množina bodů) jsou to algoritmy pro Delaunyho triangulaci, 6

vykreslení konvexního obalu množiny bodů a nejmenší kružnice uzavírající množinu bodů. Pro případ Polygon jsou to vykreslení polygonu, trinagulace polygonu a trapezoidace polygonu (rozdělení polygonu na lichoběžníky). Posledním tlačítkem GUI je RESET, které vymaže umístěné body. Reference [1] http://www.cse.unsw.edu.au/ lambert/java/3d/delaunay.html [2] http://www.geometrictools.com/documentation/triangulationbyearclipping.pdf [3] http://kfe.fjfi.cvut.cz/~holec/projects/pogr1/geometricalgorithms.zip [4] http://kfe.fjfi.cvut.cz/~holec/projects/pogr1/run [5] http://kfe.fjfi.cvut.cz/~holec/projects/pogr1/readme [6] http://kfe.fjfi.cvut.cz/~holec/projects/pogr1/javadoc/ 7

5 Ukázka Obrázek 2: Vykreslení polygonu 8

Obrázek 3: Triangulace polygonu Obrázek 4: Trapezoidace polygonu 9

Obrázek 5: Konvexní obal Obrázek 6: Delaunayho triangulace 10

Obrázek 7: Nejmenší kružnice množiny bodů 11