Valasek Gábor tavaszi félév

Hasonló dokumentumok
Valasek Gábor

Tartalom. Geometria közvetlen tárolása. Geometria tárolása - brute force. Valasek Gábor valasek@inf.elte.hu. Hermite interpoláció. Subdivision görbék

3D számítógépes geometria és alakzatrekonstrukció

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

TÉRINFORMATIKAI ALGORITMUSOK

TÉRINFORMATIKAI ALGORITMUSOK

Termék modell. Definíció:

TÉRINFORMATIKAI ÉS TÁVÉRZÉKELÉSI ALKALMAZÁSOK FEJLESZTÉSE

22. GRÁFOK ÁBRÁZOLÁSA

Klár Gergely 2010/2011. tavaszi félév

Egyirányban láncolt lista

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

10. előadás. Konvex halmazok

Geometria 1 normál szint

Geometria 1 normál szint

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Geometria. a. Alapfogalmak: pont, egyenes, vonal, sík, tér (Az alapfogalamakat nem definiáljuk)

3D-s számítógépes geometria és alakzatrekonstrukció

Valasek Gábor tavaszi félév

Fraktálok. Klasszikus fraktálpéldák I. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék

Láthatósági kérdések

Síkbarajzolható gráfok, duális gráf

11. előadás. Konvex poliéderek

Adatszerkezetek és algoritmusok

Valasek Gábor

Síkba rajzolható gráfok

Geometria brute force tárolása

Diszkrét matematika 2.C szakirány

Jogi terek modellezése a 3D kataszterben

3. előadás. Elemi geometria Terület, térfogat

Felügyelt önálló tanulás - Analízis III.

Parametrikus tervezés

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

FRAKTÁLGEOMETRIA. Példák fraktálokra I. Czirbusz Sándor február 1. Komputeralgebra Tanszék ELTE Informatika Kar

Struktúra nélküli adatszerkezetek

Felületek differenciálgeometriai vizsgálata

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

1. előadás: Halmazelmélet, számfogalom, teljes

Adatszerkezetek 2. Dr. Iványi Péter

Alapfogalmak II. Def.: Egy gráf összefüggő, ha bármely pontjából bármely pontjába eljuthatunk egy úton.

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Diszkrét matematika 2.

GEOMETRIA 1, alapszint

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Klár Gergely 2010/2011. tavaszi félév

CAD Rendszerek I. Sajátosság alapú tervezés - Szinkron modellezés

Diszkrét matematika 2.C szakirány

Adatszerkezetek 1. Dr. Iványi Péter

Diszkrét matematika 2. estis képzés

ELTE IK Esti képzés tavaszi félév. Tartalom

Diszkrét matematika 2.C szakirány

3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Adatszerkezetek 1. előadás

Geometriai modellezés. Szécsi László

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Programozás alapjai II. (7. ea) C++

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Generikus osztályok, gyűjtemények és algoritmusok

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Diszkrét matematika 1. estis képzés

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 07

Diszkrét matematika 2. estis képzés

A szimplex algoritmus

GráfRajz fejlesztői dokumentáció

Diszkrét matematika 2.

17. előadás: Vektorok a térben

{ } x x x y 1. MATEMATIKAI ÖSSZEFOGLALÓ. ( ) ( ) ( ) (a szorzás eredménye:vektor) 1.1. Vektorok közötti műveletek

Programozás I gyakorlat

PostGIS topológia használata esettanulmány

TÉRINFORMATIKAI MODELLEZÉS TÉRINFORMATIKAI MODELLEZÉS ALAPFOGALMAI A VALÓSÁG MODELLEZÉSE

Adatszerkezetek II. 1. előadás

Diszkrét matematika 2.C szakirány

Számítógépes Grafika mintafeladatok

3D számítógépes geometria és alakzatrekonstrukció

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Diszkrét matematika 2.

Követelmény a 7. évfolyamon félévkor matematikából

Elemi adatszerkezetek

FRAKTÁLGEOMETRIA Feladatok. Czirbusz Sándor április 16. A feladatok végén zárójelben a feladat pontértéke található.

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Elemi Alkalmazások Fejlesztése II.

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika 2.C szakirány

Síkbarajzolható gráfok Április 26.

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Moussong Gábor. A Poincaré-sejtés

Diszkrét matematika 2. estis képzés

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

Görbe- és felületmodellezés. Szplájnok Felületmodellezés

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Diszkrét matematika 2. estis képzés

Átírás:

Valasek Gábor valasek@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2016-2017 tavaszi félév

Tartalom

Tartalom

Áttekintés Tartalom B-reṕ Attekintés Topológiai adatszerkezetek Szárnyas-él adatszerkezet Fél-él adatszerkezet Topológiai elemek kiterjesztése Nonmanifold kiterjesztések Euler műveletek

Áttekintés Határoló felületek alapú reprezentáció Egy térfogat egyértelműen reprezentálható ha leírjuk a határát (felületét) és ezt úgy tudjuk irányítani (orientálni), hogy mindenütt egyértelműen eldönthessük, hogy a felület melyik oldala van a térfogaton belül és kívül Azaz két dolgot kell eltárolnunk: a felület topológiáját, vagyis a felületet alkotó elemek (csúcsok, élek, lapok) szomszédossági és orientációs adatait, illetve a felületi elemek tényleges geometriáját, azaz a topológiai elemek térbeli megfelelőit

Áttekintés Topológia Történetileg a poliéderek leírásából indult a téma Ezért a központi elemek a csúcsok, élek és lapok Azonban ezek absztrakt, topológiai entitások: a feladatuk az egybeesések és szomszédosságok tárolása, egyéb geometriai információt (például hogy egy lap hogyan is néz ki a térben) nem tárolnak

Áttekintés Manifold Egy manifold felületi reprezentáció minden pontjára igaz, hogy létezik olyan környezete, amelyet a térfogat belseje és külseje pontosan két összefüggő tartományra oszt. Egy felület tehát manifold, ha minden pontjára igaz az, hogy létezik olyan kicsiny környezete, amely homeomorf a síkkal. Non-manifold egy rész, ahol ez nem teljesül.

Áttekintés Irányíthatóság Egy felület irányítható ha egy tetszőleges bejárási irányt választva (pl. cw vagy ccw) nem létezik olyan zárt út a felületen, amelyet egy folytonos leképezéssel a felületen az ellentétes bejárásúra lehet transzformálni önmetszés nélkül Az irányíthatóság ekvivelens azzal, hogy ne legyen olyan része a felületnek, ami homeomorf a Möbius-szalaggal Egyszerűbben fogalmazva, akkor irányítható, ha két oldala van

Áttekintés Möbius-szalag

Áttekintés Térfogatok A legtöbb rendszer zárt, irányítható manifold-ok modellezéséből indult Az ilyen térfogatok felülete három részre osztja a teret: a térfogat belsejére (interior), a határára (surface) és a külsejére (exterior)... de nem mindig bizonyulnak elégségesnek, mert már a regularizált műveletek is kivezetnek a manifoldok köréből

Áttekintés Nonmanifold

Áttekintés Nonmanifold

Áttekintés Nonmanifold

Áttekintés Nonmanifold esetek kezelése Három megközeĺıtéssel kezelhető: 1. Az objektumok topológiája és geometriája is manifold: azaz csak olyan műveletek engedélyezettek csak, amelyek manifold eredményt adnak. 2. Az objektumnak csak a topológiája manifold: azaz topológiailag különböző példányok (pl. két él) a térben eshet fizikailag egybe. Itt meg kell határozni, hogy topológiailag minek tekintsük a geometriailag egybeeső elemeket. 3. A geometria és a topológia is nonmanifold.

Áttekintés Nonmanifold Ez abból a szempontból szerencsésebb, hogy degenerált háromszögek nélkül is triangularizálható a test (hiszen a P1 és a P2, illetve hátoldali társaik külön-külön háromszögek csúcsai lennének.)

Áttekintés Nonmanifold Itt viszont az egybeesés (P1 = P2) miatt egy degenerált háromszöget kapnánk minden esetben, amiben P1P2 egy él.

Topológiai adatszerkezetek Tartalom B-reṕ Attekintés Topológiai adatszerkezetek Szárnyas-él adatszerkezet Fél-él adatszerkezet Topológiai elemek kiterjesztése Nonmanifold kiterjesztések Euler műveletek

Topológiai adatszerkezetek Szárnyas-él adatszerkezet Tárolás során csúcsokat, éleket és lapokat különböztet meg Az élek szempontjából tároljuk a szomszédossági adatokat Minden élhez fix számú adat tartozik Segítségével pl. gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot

Topológiai adatszerkezetek Szárnyas-él adatszerkezet - lapok Minden laphoz élsorozatok diszjunkt listáit rendeljük: Az első lista a lap határát megadó élsorozat A további listák pedig a lap belsejében található lyukakat körülölelő élsorozatok Egy éllistát egy tetszőleges élével (reprezentáns élével) el tudjuk tárolni (illetve az élen belül ki kell még választani az oldalt)

Topológiai adatszerkezetek Szárnyas-él adatszerkezet - csúcsok A csúcspontok élekhez illeszkednek (vagy belőle indul ki, vagy ő a célja) Tetszőleges, csúcsra illeszkedő élt eltároljuk a csúcshoz

Topológiai adatszerkezetek Szárnyas-él adatszerkezet - élek adatai Egy él két csúcsot köt össze - tároljuk ezeket az élben rendezett párként (mivel az élek irányítottak, ezért a két csúcs sorrendje fontos) 2 manifold esetben egy él legfeljebb két lap között futhat - az egyik a baloldali, a másik a jobboldali lap lesz, ezekre mutató pointereket (vagy indexeket) tárolunk A fenti két lapon egyúttal egy-egy élsorozat (az adott lapot alkotó élsorozat) része is az adott él - mindkét élsorozatban tároljuk a rákövetkezőjét és megelőzőjét az adott élnek az adott lap bejárási irányának megfelelően (!)

Topológiai adatszerkezetek Egyetlen él adatai csúcs lap balra jobbra él start vég bal jobb előző köv. előző köv. a B A 0 1 c b d e

Topológiai adatszerkezetek Egyéb táblázatok Csúcsok táblája csúcs ID csúcsból induló él Lapok táblája lap ID lap egy éle minden lapon belüli lyuk egy éle

Topológiai adatszerkezetek Példa: tetraéder

Topológiai adatszerkezetek Pl.: Egy lap összes szomszéd lapjának felsorolása d e f a l l N e i g h b o u r s ( face, edges, v e r t i c e s, f a c e s ) : s t a r t E d g e = f a c e s [ f a c e ] edge = s t a r t E d g e i f edges [ s t a r t E d g e ]. f a c e L e f t == f a c e : w h i l e edges [ edge ]. s u c c L e f t!= s t a r t E d g e : p r i n t edges [ edge ]. f a c e R i g h t edge = edges [ edge ]. s u c c L e f t e l s e : w h i l e edges [ edge ]. s u c c R i g h t!= s t a r t E d g e : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. s u c c R i g h t

Topológiai adatszerkezetek Pl.: Egy lap összes szomszéd lapjának felsorolása Azaz: induljunk el az adott lap reprezentáns éléből (amit tárolunk a laphoz) Ha ennek az élnek a baloldali lapja az adott lap: iteráljunk végig a baloldali éllistán és írjuk ki a jobboldali lapokat (a baloldali a lekérdezést kiváltó lap) Különben a jobboldali lap az adott lap, iteráljunk végig a jobboldali lap éllistáján Az iteráció érjen véget, amint visszaérünk az adott lap reprezentáns élébe

Topológiai adatszerkezetek Pl.: Egy adott csúcsot tartalmazó összes lap felsorolása d e f a l l F a c e s ( v e r t e x, edges, v e r t i c e s, f a c e s ) : s t a r t E d g e = v e r t i c e s [ v e r t e x ] edge = s t a r t E d g e done = F a l s e w h i l e not done : i f edges [ edge ]. v e r t S t a r t == v e r t e x : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. p r e d L e f t e l s e : p r i n t edges [ edge ]. f a c e R i g h t edge = edges [ edge ]. p r e d R i g h t

Topológiai adatszerkezetek Fél-él adatszerkezet A winged-edge élét vegyük szét két fél-élre! lényegében az élek lapra vett vetületével dolgozunk! A fél-élhez csak egy lap tartozhat + meg kell jegyeznünk a testvér fél-élét (az adott él másik oldali lapra vett vetületét) A reprezentáció központi eleme a fél-él

Topológiai adatszerkezetek Half-edge

Topológiai adatszerkezetek Half-edge

Topológiai adatszerkezetek Fél-él adatszerkezet Szigorú értelemben véve egy fél-élhez pontosan egy csúcs, él és lap tartozik (de gyakorlatban ennél többet tárolni hasznos lehet) A következőt tároljuk egy fél-élben: az fél-él cél csúcspontja (vertex), a fél-él testvére (sym), a fél-él lapja (face) és a lapot körbefogó fél-élsorozatban a rákövetkez?je (next) A lapokhoz egy tetszőleges alkotó fél-él pointerét jegyezzük fel A csúcspontokhoz egy befutó fél-élt HE sym sym = HE, HE next sym vertex = HE vertex stb.

Topológiai adatszerkezetek Pl.: Adott lap körbejárása d e f faceloop (HE ) : l o o p = HE do : p r i n t HE l o o p = HE. next w h i l e l o o p!= HE

Topológiai elemek kiterjesztése Tartalom B-reṕ Attekintés Topológiai adatszerkezetek Szárnyas-él adatszerkezet Fél-él adatszerkezet Topológiai elemek kiterjesztése Nonmanifold kiterjesztések Euler műveletek

Topológiai elemek kiterjesztése Kiterjesztés: élhurkok (loop) Lapok belsejében lévő lyukak/bemélyedések tárolására lapon belül elhelyezkedő élhurkokat használunk, hogy a lapból is elérhessük ezeket Általában a lap határéleihez képest fordított bejárással tároljuk el őket A laphoz pedig eltároljuk egy ciklikus listában az összes, hozzá tartozó élhurkot

Topológiai elemek kiterjesztése Kiterjesztés: héj (shell) és test (body) Objektumon belüli üregek reprezentálására (és az objektumhoz rendelésére) használjuk a héjakat Megkötjük, hogy a héjakat zárt 2-manifold felület határolja A testet alkotó héjakat pedig a testben eltároljuk, megint csak egy kétirányú listában

Topológiai elemek kiterjesztése Loop, shell

Nonmanifold kiterjesztések Tartalom B-reṕ Attekintés Topológiai adatszerkezetek Szárnyas-él adatszerkezet Fél-él adatszerkezet Topológiai elemek kiterjesztése Nonmanifold kiterjesztések Euler műveletek

Nonmanifold kiterjesztések Nonmanifold lap A lap egy véges területű elem amit csúcspontok és élek egy vagy több köre (cycle) határol A határoló csúcssorozat lehet degenerált (=ugyanaz a csúcs többször szerepel, vagy akár csak 1 csúcsból áll) Meg kell állapodni, hogy az éleket milyen bejárás szerint tároljuk (pl. a lap belseje mindig jobbra legyen) és hogy milyen normálisakat (pl. térfogat belsejéből kifelé mutató) használunk Magányos csúcs/él csak lap belsejében lehet (ez egy nulla területű lyuk a lapban)

Nonmanifold kiterjesztések Nonmanifold lap

Nonmanifold kiterjesztések Nonmanifold él Egy nonmanifold él a köveketőket tartalmazza: A kezdő és végpontokat Az illeszkedő lapok egy rendezett, ciklikus listáját A laplista elemeiből képzett párokat, amelyek azokat a lapokat határozzák meg amelyek között térfogat van Az egymás utáni lapokon alternál a bejárási irány!

Nonmanifold kiterjesztések Nonmanifold csúcs Egy csúcsban pedig eltároljuk a beeső éleket a beeső lapokat ahol a beeső lapok több kúpot is alkothatnak annak függvényében, hogy milyen nonmanifold esetet kezelünk.

Euler műveletek Tartalom B-reṕ Attekintés Topológiai adatszerkezetek Szárnyas-él adatszerkezet Fél-él adatszerkezet Topológiai elemek kiterjesztése Nonmanifold kiterjesztések Euler műveletek

Euler műveletek Euler-Poincaré formulák V a csúcsok száma E az élek száma F a lapok száma G a térfogat génusza ( a rajta áthaladó lyukak száma) S a héjak száma (de minden héjnak magának lehet további génusza). Maga a test is egy héjnak számít. L a külső (határoló) és belső (lyukakat körülvevő) élhurkok száma

Euler műveletek Euler-Poincaré formulák Konvex poliéderre: (Euler) V E + F 2 = 0 Olyan lyukas poliéderekre, amiket ha befoltozunk, akkor egy konvex poliédert kapunk: (Simon Lhuilier) V E + F 2(1 G) = 0 Ha lyukakon túl megengedünk a testen belül üregeket: (Henri Poincaré) V E + F (L F ) 2(S G) = 0

Euler műveletek Euler-Poincaré formulák 20 bizonyítás

Euler műveletek Euler-Poincaré formulák - kocka V E +F (L F ) 2(S G) = 8 12+6 (6 6) 2(1 0) = 0

Euler műveletek Euler-Poincaré formulák - bemélyedés V E +F (L F ) 2(S G) = 16 24+11 (12 11) 2(1 0) = 0

Euler műveletek Euler-Poincaré formulák - bemélyedés V E +F (L F ) 2(S G) = 16 24+10 (12 10) 2(1 1) = 0

Euler műveletek Euler-Poincaré formulák - üreg V E +F (L F ) 2(S G) = 24 36+16 (18 16) 2(2 1) = 0

Euler műveletek Génusz A génusz számítása nem triviális Nem elég ugyani azt megnézni, hogy a test külső felületén összesen mennyi lyuk van!

Euler műveletek Mennyi a génusza?

Euler műveletek Mennyi a génusza?

Euler műveletek Mennyi a génusza? 2!

Euler műveletek Euler műveleteknek Azokat a szerkesztési műveleteket, amik érvényben hagyják az Euler-Poincaré formulákat Euler műveleteknek hívjuk Az Euler-Poincaré formulák csak szükséges feltételt adnak a topológia konzisztenciájára! Attól, hogy a topológiai elemek számossága kielégíti őket, még nem következik, hogy helyes a felület, további megkötésekre van szükség A modell topologikus validációjának elégséges feltételéhez algebrai topológiai ismeretek szükségesek: részletek Hoffmann 3. fejezet

Euler műveletek Topologikusan valid Mäntylä belátta 1984-ben, hogy manifold testek modellezésének teljes művelettára feĺırható Euler műveletek segítségével Azaz tetszőleges, topologikusan helyes poliéder előálĺıtható egy kiindulási poliéder és véges számú Euler művelet segítségével

Euler műveletek Euler műveletek Kétféle művelet van: M(ake)x..z topológiai elem létrehozására és K(ill)x..z topológiai elem törlésére amikek az argumentumai a topológiai entitások listái, tehát egy string ami a csúcs (v), él (e), élhurk (l), lap (f), héj (s) azonosítóiból áll. Azaz például Mv csinál egy új csúcsot, MeKf csinál egy élt és töröl egy lapot stb.

Euler műveletek Euler műveletek Még ezekkel sem triviális a modellezés, hiszen ha vesszük például két csúcs éllel való összekötését, akkor rögtön három esetünk van: 1. elvágja a lap egy részét a többitől ekkor növelni kell a csúcsok, élek és lapok számát is eggyel 2. ugyanazon lap két loop-ját köti össze hozzáadunk egy élet és megszüntetünk egy loop-ot (pontosabban összevonunk kettő loop-ot) 3. a test határát köti össze egy üreg csúcspontjábal -1 héj és +1 él

Euler műveletek 1-es eset: Mefl

Euler műveletek 2-es eset: MeKl

Euler műveletek 3-as eset: MeKs