Kor om grafer Topologiske operaorer og operasjoner, G-maps Presenasjon og analyse av daasrukurer Kor om objek-oriener implemenasjon
Grafer DEFINISJON. En graf GÂV, EÃ besår av e se noder V og e se kaner E som forbinder o og o noder i V. (a) (b) Grafer har i ugangspunke ingen geomerisk informasjon. I forbindelse med rianguleringer snakker vi om embedded graphs, dvs. vi assosierer geomeri il de opologiske elemenene noder og kaner. Topologi: Noder Kaner Trekaner Geomeri: punker kurver (linjer) flaelapper
Trianguleringer kan sees på som spesialilfeller av grafer:. Hver rekan er gi implisi gi som en cycle av re kaner (og re noder).. G A ÂV,Eà er planar. DEFINISJON. En graf GÂV, Eà kalles planar dersom den kan egnes i plane slik a en hver kan E i,j = ÂV i,v j à ikke skjærer G uenom i V i og V j. Grafen i figur (a) er opplag planar. De kan vises a grafen i figur (b) ikke er planar. 3
Grafer... Andre definisjoner Ree graf: Kanene E i,j har reninger, for eks., fra V i il V j Muligraf: De kan være mer enn en kan mellom o noder V i og V j. Ellers kalles grafen en enkel graf. Noen daasrukurer for rianguleringer er baser på halv-kaner (half-edges) der hver sidekan er o opologiske elemener som peker i hver sin rening; alså en Planar ree muligraf. Ved å se på rianguleringer som grafer kan vi nyegjøre oss av grafeoriske konseper og graf-algorimer.
Elemenære opologiske operasjoner Med opologiske operasjoner på en riangulering A menes operasjoner som ikke bruker geomerisk informasjon (embedding). Konsepuel er de o yper: I. Operasjoner som endrer opologien i A. II. Operasjoner for å raversere A (I) kan beså av operaorer som:. bevarer anall opologiske elemener, V, E og T, for eks. swapping,. fjerner opologiske elemener, 3. legger il opologiske elemener. Vi skal se nærmere på operaorer av ypen II. 5
G-maps (generalized maps) G-maps muliggjør en algebraisk beskrivelse av opologien i B-rep srukurer. (B-rep: boundary represenaion ). G-maps er baser på noen få enkle konseper, og gir oss e krafig verkøy il å implemenere inerfacer il daasrukurer. Vi skal bruke konseper fra G-maps il å lage raverserings-operaorer (ieraorer) på rianguleringer.
G-maps... DEFINISJON. En dar dar i en riangulering er e enydig rippel d = ÂV i,e j,t k à der V i er en av nodene i kanen E j, og E j er en sidekan i rekanen T k. Topologien i en riangulering besår dermed av e enydig se D av dars. Dar d
DEFINISJON (J-ieraorer, eller involusjoner). Vi definerer re enydige funksjoner J0, J and J som opererer på see D. Ji, i = Ji : D D, i = 0,,.,,3 er en-il-en avbildninger og bijekiv; J iâj iâdãã = d. Vi definerer J-ieraorene slik: Iniial dar Resul of α 0 Resul of α Resul of α Dar d og J-ieraorer node edge riangle J 0 (swich nodes) fixed fixed J (swich edges) fixed fixed J (swich riangles) fixed fixed 8
J-ieraorer... Dersom E i i en dar d i = ÂV i,e i,t i à er på randen I av en riangulering, definerer vi d i il å være uendre under J: JÂd i à = d i. ( fix poin ) En komposisjon JiÂJjÂdÃà skrives Ji E JjÂdà En riangulering A kan nå represeneres som en graf G A ÂD, J0, J, Jà som vi kaller en G-map. 9
Dualen il en G-map er en merke graf: 0 0 0 0 0 0 0 0 0 En node svarer il en dar En graf-kan merke i svarer il JiÂdà slik a d flyes over kanen. Grafen er regulær av grad 3. 0
Orbis d d d α ( d ) α ( d ) ( d ),α 0,α α 0,α 0-orbi -orbi -orbi DEFINISJON (k-orbi, k = 0,, ). La ÆJi Ç være en, o eller alle re J-ieraorer il en G-map GÂD, J0, J, JÃ, og la d 5 D. En orbi»æji ǼÂdà av d er see av alle dars i D som kan nås med komposisjoner av ÆJ i Ç (i vilkårlig rekkefølge) ved å sare fra d. Ji, Jj, i, j k, i j Âdà kalles k-orbi il d. Se figur.
Egenskaper ved J-ieraorer Alle d 5 D i en regulær riangulering kan nås med komposisjoner av Ji, i = 0,, JiÂdÃ, i = 0,, byer klokke-rening på d unna når d er på randen. Hvis en komposisjon J i E J j uføres gjenae ganger har vi: J0 E J iererer over noder og kaner i en rekan (-orbi) J E J iererer rund en node (0-orbi) J0 E J ierer rund en sidekan (-orbi) Hvis vi byer Ji E Jj med Jj E Ji iereres de i mosa rening. I illegg har vi Ji E JiÂdà = d, i = 0,,, og ÂJ0 E JÂdÃà = J0 E J E J0 E JÂdà = d.
n-g-maps... G-maps kan generaliseres il n dimensjoner; n-g-map Eksempel: erahedrisering, n = 3; 3-G-map: d = J-ieraorer: Ânode, edge, riangle, erahedronã Ji, i = 0,,,3 node edge riangle erahedron J 0 fixed fixed fixed J fixed fixed fixed J fixed fixed fixed J 3 fixed fixed fixed Merk a daasrukurer baser på dars vil a sor plass.; men vi kan bruke G-maps som (generisk) inerface il vikårlige daasrukurer. 3
Valg av daasrukur er avhengig av applikasjonen. Generel; rade-off mellom. hasighe av å uføre opologiske operasjoner, dvs. J0, J, J, og. lagringsbehov (i RAM eller daabase). Eksempel: Visualisering: Må ha ilsrekkelig naboskapsrelasjon for å eksrahere rekan-sriper rask. Lagring på daabase: Trenger en daasrukur som ar lien plass. I mange applikasjoner rengs flere daasrukurer; og verkøy for å mappe mellom dem.
3 3 5 A sample riangulaion 5 Fra preliminaries : T u V, E u 3V, > V i= degâv i à u V (når V >> V B ) T V? 5 E 3V? 5
Lagring av geomerisk informasjon Hvis en riangulering represenerer en errengmodell, er den ofes sykkevis lineær; og kun nodene, ÆÂx i,y i,z i ÃÇ, må lagres: 3 D V D 8 (byes pr. double) = V byes Generel, for Bernsein-Bezier flaer kan de være akuel å lagre (mange) koeffisiener i illegg. Dee behandles senere i kurse.
Minimal rekan-baser daasrukur Triangle # : : 3: : 5: : Triangle i j k 3 5 Lagringsbehov for opologisk informasjon: La N P være anall pekere. Bruker T T u V. N P N P u V. V? 5 and V? 5, og
Hvis hver peker krever byes, må de lagres N P u V byes, dvs. de samme som for geomerien (Âx i,y i,z i Ã-koordinaene il nodene). Kompak lagring Ingen naboskapsinformasjon J er en OÂNÃ operasjon. Brukes for lagring i daabase? 8
Trekan-baser med naboer Lagrer også naborekaner (mo klokka). k T k,i T j,k T i,j,k i T i,j j Triangle # : : 3: : 5: : Triangle i j k 3 5 neighbours T j,k T k,i T i,j - 3 - - 5 - - - Lagringsbehove er de doble av den minimale 9
srukuren: N P N P u V? 30 and V J0, J og J er OÂÃ. Eksempel: α ( d 0 ) d α ( d ) α ( d ) d = ÂV,E,,T,, à J0Âdà = ÂV,E,,T,, Ã. JÂdà = ÂV,E,,T,, Ã. JÂdà = ÂV,E,,T,, Ã. 0
Node-baser med naboer 5 5 - Pseudo node Verex # 3 5 Adjaceny ÂADJÃ 0 3 0 0 3 5 0 0 5 0 End ÂENDÃ 9 8 30
Lagringsbehov: N V ADJ = > i= og N END = V. degâv i à + V B, inkluder pseudonoder, N ADJ = E + V B = Â3V? V B? 3à + V B = V? V B? + V B = V? V B? V? 9 N P = N ADJ + N END, N P = når V >> V B. N ADJ + N END = V? V B? u V Dee er beydelig mindre enn for rekan-baser (N P u V), men vi har ingen lise av rekaner. Med rekaner: N P u 3V. (pluss u V D 3) J0, J og J er OÂà og raskere enn rekan-baser.
Halv-kan (half-edge) srukur Hver sidekan splies i o reede halv-kaner oriener i hver sin rening. (a) 9 3 3 8 5 3 8 0 5 5 (b) Half-edge daa srucure En halv-kan hører kun il en rekan og er oriener mo klokka. Hver halv-kan har re pekere i) Node, ii) NexEdge, iii) TwinEdge 3
Edge # : : 3: : 5: : : 8: 9: 0: : : 3: :... Verex 3... Half-edge poiners Nex edge Twin-edge - 3 8 5 3 8 9 - - 3 0 5 5 -......
Lagringsbehov: N V : anall nodepekere N Eh : anall halv-kan pekere Toal: N P = N V + N Eh u 8V. Hvis vi også skal ha rekaner må vi lagre V pekere i illegg, dvs. oal: N P u 0V. Krever mer memory enn de andre srukurene, men J0, J og J er (mye) raskere. 5
Dar-baser daasrukur Lar dar en være de enese opologiske elemene i daasrukuren. (a) 3 (b) 5 0 5 9 8 5 α 8 α 3 α 0 3 Dee konsepe brukes bl.a. i 3D geologisk modellering. Kan brukes for små daamengder.
(a) 3 (b) 5 0 5 9 8 5 8 α α 3 α 0 3 Dar d : : 3: : 5: : : 8: 9: 0: : : Dar poiners Verex J 0Âdà J Âdà J Âdà 3 3 5 5 8 8 3 9 0 8 5 9 0 3
Lagringsbehov: u dars for hver rekan bruker T V? 5 og T u V N P N P u 8V. 8V? 0 og Hvis en lise av dars også lagres, får vi i illegg D V = V pekerfeler; dvs. oal N P u 0V. ca. re ganger lagringsbehove for halv-kan srukuren!!!, men Rask: ingen beregninger eller sammenligninger for å uføre J0, J og J. Konklusjon: uaksepabel for sore daamengder. 8
Sammendrag Srukur Lagring Effekivie Minimal rekan-baser N P u V J = OÂNÃ Trekan-baser med naboer N P u V god Node-baser med naboer N P u V god+ Halv-kan (Half-Edge) N P u 8V god++ Dar-baser N P u 8V OÂ0Ã 9
Objek-oriener design Eksempel med halv-kan (half-edge) srukur: Klasser: Node, HalfEdge, Triangle, Triangulaion. (win edge) Node 0 Half-Edge Triangle N Tiangulaion (nex in riangle) Klassediagram class Triangle kan implemeneres som en peker il en av halv-kanene. class Triangulaion kan implemeneres som lis<triangle> Typiske medlemsfunksjoner: HalfEdge::geNexHalfEdge = J E J 0Âdà HalfEdge::geTwinEdge = J 0 E J Âdà 30