www.wikidata.de-de.nina.az
Eine Half Edge Datenstruktur oder auch Doubly Connected Edge List DCEL engl Doppelt verkettete Kantenliste ist eine Datenstruktur fur planare Graphen Sie besteht aus Knoten Halbkanten half edges und Flachen Dabei wird jede Kante durch zwei gerichtete gegenlaufige Halbkanten reprasentiert denen jeweils ihr Startknoten angrenzende Flache andere Halbkante derselben Kante und die nachste Halbkante derselben Flache zugeordnet sind Umgekehrt kennen auch Knoten und Flachen ihre jeweiligen Nachbarn Diese Struktur erlaubt eine schnelle Beantwortung von Nachbarschaftsfragen und effiziente Iteration um Flachen und Knoten insbesondere auch auf unstrukturierten Gittern Sie eignet sich daher besonders fur unstrukturierte raumliche Datensatze wie sie in Finite Elemente Methoden zum Einsatz kommen sowie Computergrafik und Polygonnetze im Allgemeinen Inhaltsverzeichnis 1 Aufbau 1 1 Halbkanten 1 2 Knoten 1 3 Flachen 2 Kombinierte Anfragen bzw Operationen 2 1 Beispielcode 3 Redundanz und implizite Informationen 4 Weblinks 5 EinzelnachweiseAufbau BearbeitenEine Half Edge Datenstruktur besteht aus Knoten Halbkanten und Flachen die jeweils in einer Liste abgelegt sind 1 Zu jedem einzelnen dieser Elemente sind zumindest einige seiner Nachbarn gespeichert d h angrenzende inzidente Elemente Beispielsweise ist zu jeder Halbkante ihre angrenzende Flache gespeichert bzw ein Zeiger auf diese Flache Halbkanten Bearbeiten nbsp Ausschnitt einer DCEL Exemplarisch gekennzeichnet sind eine Kante e ihr Nachfolger next e ihr Vorganger prev e sowie ihr Zwilling twin e Charakteristisch und namengebend fur die Half Edge Datenstruktur ist der Umstand dass Verbindungen zwischen zwei Punkten nicht durch eine einzelne volle Kante reprasentiert werden sondern aus genau zwei sogenannten Halbkanten bestehen Diese sind gegenlaufig gerichtet d h der Zielknoten der einen Halbkante ist der Startknoten der anderen Halbkante und umgekehrt Der Vorteil dieses Vorgehens besteht unter anderem darin dass jeder Halbkante Vorganger Nachfolger und angrenzende Flache eindeutig zugeordnet werden konnen Solche Beziehungen werden in den nachsten Abschnitten genauer erlautert nbsp Die grauen Pfeile symbolisieren die Verknupfung der jeweiligen Halbkante zu dessen Nachfolger Unten rechts tritt ein Spezialfall auf Der Nachfolger der Halbkante ist gleichzeitig ihr Zwilling Jeder Halbkante werden bis zu drei weitere Kanten zugeordnet in Klammern stehen jeweils die englischen Bezeichnungen 1 Nachfolger next half edge die nachfolgende zur selben Flache inzidente Kante Zwilling twin Die andere gegenlaufige Halbkante derselben Kante Vorganger previous half edge Die vorhergehende zur selben Flache inzidente Kante Als nachste Kante wird anschaulich diejenige Kante definiert auf die man zuerst trifft wenn man im Uhrzeigersinn um den Zielknoten herumlauft Man kann es sich auch so vorstellen dass die Halbkanten gegen den Uhrzeigersinn um die inzidente Flache herumlaufen Dabei ist jedoch zu beachten dass diese Anschauung fur isolierte Teilgraphen die ihrerseits in einer anderen Flache liegen Siehe Abschnitt Flachen unintuitiv sein kann da die ausseren Halbkanten dieses Teilgraphen scheinbar im Uhrzeigersinn verlaufen Weiter werden zu jeder Kante gespeichert Startknoten origin source inzidente Flache face die Flache auf der linken Seite der Halbkante Knoten Bearbeiten Da der Grossteil der Konnektivitatsinformationen bereits in den Halbkanten steckt wird zu den einzelnen Knoten lediglich eine Ausgehende Kante Incident Edge gespeichert 1 Da Knoten meist Punkte in einem Raum sind werden meist zusatzlich die Koordinaten gespeichert Flachen Bearbeiten nbsp Flache F in hellgrau und ihre aussere Komponente und die in diesem Fall zwei inneren Komponenten jeweils identifiziert uber eine zur Flache inzidente Halbkante der Komponente Flachen werden durch die sie berandenden Zyklen aus Halbkanten definiert Das konnen mehrere Zyklen sein wenn in der Flache selbst weitere Komponenten liegen Statt diese Zusammenhangskomponenten als separates Objekt zu behandeln wird einfach je eine Halbkante dieser Zyklen gespeichert 1 Aussere Komponente Outer Component Zyklus der die Flache nach aussen hin umrandet Innere Komponenten Inner Components Liste von Zyklen die innerhalb der Flache liegen Kombinierte Anfragen bzw Operationen BearbeitenMittels Kombination der verschiedenen Relationen konnen komplexe Anfragen beantwortet werden Zielknoten einer Halbkante Startknoten des Zwillings Nachbarflache entlang einer Halbkante inzidente Flache des Zwillings der Halbkante Alle zu einer Flache inzidenten Halbkanten erste Halbkante aussere Komponente der Flache innere Komponenten analog So lange jeweils dem Nachfolger folgen bis man wieder an der ersten Halbkante angelangt ist Alle zu einem Knoten inzidenten Flachen Siehe Beispielcode unten Beispielcode Bearbeiten Beispielcode fur die Iteration uber alle zu einem Knoten inzidenten Flachen Der Algorithmus entspricht dem fur die Iteration uber alle inzidenten Halbkanten mit dem Unterschied dass jeweils noch die Flache der aktuellen Halbkante ermittelt werden muss mit der dann irgendetwas getan werden kann erste halbkante incidentEdge knoten aktuelle halbkante erste halbkante do tue irgendwas incidentFace aktuelle halbkante aktuelle halbkante next twin aktuelle halbkante while aktuelle halbkante erste halbkante Siehe auch Polygonnetz Laufzeitvergleich fur weitere Anfrageklassen und Laufzeitvergleiche Redundanz und implizite Informationen BearbeitenSelbst eine Datenstruktur die nur aus Halbkanten der Zwillings und der Nachfolger Relation besteht bietet bereits einen Grossteil des Funktionsumfangs So ist eine Traversierung des Graphen bereits moglich Auch Flachen und Knoten sind implizit bereits enthalten Der Zyklus der sich ergibt wenn man von einer Halbkante aus so lange die Nachfolger entlanggeht bis man wieder an derselben Kante angelangt ist berandet eine Flache Ein etwas komplizierterer Zyklus der entsteht indem man abwechselnd Zwilling und Nachfolger entlanggeht identifiziert einen Knoten Solche minimalistischen Losungen sind in seltenen Fallen bereits ausreichend Beispielsweise wenn die von den Kanten berandeten Flachen keine praktische Rolle spielen wie im Falle von Strassennetzen oder Flussen 2 Weblinks BearbeitenPolygon Mesh Processing LibraryEinzelnachweise Bearbeiten a b c d Mark de Berg Otfried Cheong Marc van Kreveld Mark Overmars Computational Geometry Algorithms and Applications Springer Verlag Berlin Heidelberg New York 2000 ISBN 3 540 65620 0 S 31 32 Mark de Berg Otfried Cheong Marc van Kreveld Mark Overmars Computational Geometry Algorithms and Applications Springer Verlag Berlin Heidelberg New York 2000 ISBN 3 540 65620 0 S 33 Abgerufen von https de wikipedia org w index php title Half Edge Datenstruktur amp oldid 206676412