Quadtrees und Meshing

Ähnliche Dokumente
Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Geradenarrangements und Dualität von Punkten und Geraden

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Polygontriangulierung

Quadtrees. Christian Höner zu Siederdissen

Beschriftung in Dynamischen Karten

Grundlagen der Theoretischen Informatik

Lineares Programmieren

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Punkt-in-Polygon-Suche Übersicht

Übung zur Vorlesung Algorithmische Geometrie

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

13. Binäre Suchbäume

Übung zur Vorlesung Berechenbarkeit und Komplexität

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Geometrische Algorithmen

Rolf Wanka Sommersemester Vorlesung

Informatik II, SS 2014

Algorithmen II Vorlesung am

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Definition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Kurs 1613 Einführung in die imperative Programmierung

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Suchen und Sortieren Sortieren. Heaps

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide

Vorlesung 4 BETWEENNESS CENTRALITY

11.1 Grundlagen - Denitionen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Theoretische Informatik SS 03 Übung 3

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

ADS: Algorithmen und Datenstrukturen 2

Kostenmaße. F3 03/04 p.188/395

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK 0. ORGANISATORISCHES UND ÜBERBLICK

Durchschnitt von Matroiden

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Punktbeschriftung in Dynamischen Karten

häufige Aufgabe Motivation: Approximation komplizierter Geometrien durch einfachere Dreiecke oft effizienter zu bearbeiten als Polygone

11. Elementare Datenstrukturen

Probleme aus NP und die polynomielle Reduktion

8 Diskrete Optimierung

Vorlesung Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Das Heiratsproblem. Definition Matching

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Datenstrukturen und Algorithmen

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Triangulierung von einfachen Polygonen

2. Optimierungsprobleme 6

Triangulierung von einfachen Polygonen

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Simulation von Zufallsvariablen und Punktprozessen

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

Abschnitt 18: Effizientes Suchen in Mengen

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Zusammenfassung. Benjamin Niedermann Vorlesung Algorithmische Kartografie

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Vorlesung 2 KÜRZESTE WEGE

Theoretische Informatik 1

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Theoretische Informatik SS 03 Übung 4

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

15. Elementare Graphalgorithmen

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Sortierte Folgen 250

Dynamische Mengen. Realisierungen durch Bäume

Computer Graphik II Tesselierung impliziter Kurven und Flächen

Einführung in die Informatik Turing Machines

Informatik II Vorlesung am D-BAUG der ETH Zürich

Transkript:

Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.06.2014

Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine

Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine Qualitätseigenschaften von FEM: je feiner das Mesh desto besser die Approximation je gröber das Mesh desto schneller die Berechnung je kompakter die Elemente desto schneller die Konvergenz

Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine Qualitätseigenschaften von FEM: je feiner das Mesh desto besser die Approximation je gröber das Mesh desto schneller die Berechnung je kompakter die Elemente desto schneller die Konvergenz Ziel: adaptive Meshgröße (klein an Materialgrenzen, sonst gröber) wohlgeformte Dreiecke (nicht zu schmal)

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. unzulässige Dreiecksknoten Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften keine Dreiecksknoten im Inneren von Dreieckskanten

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. nicht Teil des Dreiecksnetzes Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften keine Dreiecksknoten im Inneren von Dreieckskanten Eingabekanten müssen Teil des Dreiecksnetzes sein

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. unzulässige Winkel Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Dreieckskanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. uniformes Dreiecksnetz Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Dreieckskanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber

Adaptive Dreiecksnetze Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { uniformes Dreiecksnetz keine Dreiecksknoten im Inneren von Dreieckskanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Kennen wir schon sinnvolle Triangulierungen für Q?

Delaunay-Triangulierung? maximiert kleinste Winkel

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten kann trotzdem sehr kleine Winkel produzieren

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten kann trotzdem sehr kleine Winkel produzieren verwendet keine zusätzlichen Steiner-Punkte Winkel zulässig, aber uniform Winkel zulässig und adaptiv 512 Dreiecke 52 Dreiecke

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. NO NW SW SO

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. Kanten Seiten NO NW SW SO Ecken Nachbarn

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. Def.: Für eine Punktmenge P in einem Quadrat Q = [x Q, x Q ] [y Q, y Q ] gilt für den Quadtree T (P ) ist P 1, so ist T (P ) ein Blatt, das P und Q speichert sonst sei x mid = x Q+x Q und y 2 mid = y Q+y Q und 2 P NO := {p P p x > x mid and p y > y mid } P NW := {p P p x x mid and p y > y mid } P SW := {p P p x x mid and p y y mid } P SO := {p P p x > x mid and p y y mid } T (P ) besteht aus Wurzel v, die Q speichert, mit vier Kindern für P i und Q i (i {NO, NW, SW, SO}).

Beispiel

Beispiel

Beispiel

Beispiel

Beispiel

Beispiel

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen.

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte?

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte? Lemma 1: Die Tiefe von T (P ) ist höchstens log(s/c) + 3/2, wobei c der kleinste Abstand in P ist und s die Seitenlänge des Wurzelquadrats Q.

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte? Lemma 1: Die Tiefe von T (P ) ist höchstens log(s/c) + 3/2, wobei c der kleinste Abstand in P ist und s die Seitenlänge des Wurzelquadrats Q. Satz 1: Ein Quadtree T (P ) für n Punkte und mit Tiefe d hat O((d + 1)n) Knoten und kann in O((d + 1)n) Zeit konstruiert werden.

Nachbarn finden NorthNeighbor(v, T ) Input: Knoten v in Quadtree T Output: tiefster Knoten v nicht tiefer als v mit v.q nördl. Nachbar von v.q if v = root(t ) then return nil π parent(v) if v = SW -/SO-Kind von π then return NW -/NO-Kind von π µ NorthNeighbor(π, T ) if µ = nil oder µ Blatt then return µ else if v = NW -/NO-Kind von π then return SW -/SO-Kind von µ

Nachbarn finden NorthNeighbor(v, T ) Input: Knoten v in Quadtree T Output: tiefster Knoten v nicht tiefer als v mit v.q nördl. Nachbar von v.q if v = root(t ) then return nil π parent(v) if v = SW -/SO-Kind von π then return NW -/NO-Kind von π µ NorthNeighbor(π, T ) if µ = nil oder µ Blatt then return µ else if v = NW -/NO-Kind von π then return SW -/SO-Kind von µ Satz 2: Sei T ein Quadtree mit Tiefe d. Der Nachbar eines Knotens v in beliebiger Richtung kann in O(d + 1) Zeit gefunden werden.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Wie? Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Wie?

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Wie? Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Wie? Wie groß kann ein balancierter Quadtree werden?

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Satz 3: Sei T ein Quadtree mit m Knoten und Tiefe d. Die balancierte Version T B von T hat O(m) Knoten und kann in O((d + 1)m) Zeit konstruiert werden.

Theoretische Grundlagen der Informatik Nichtdeterminismus Tutoren für TGI gesucht! Turing-Maschine P versus NP Approximation Komplexitätsklassen Voraussetzungen: Interesse an theoretischer Informatik. Gute Ergebnisse in der Klausur zu TGI. Bei Interesse meldet euch bei: Benjamin Niedermann (niedermann@kit.edu) Franziska Wegner (franziska.wegner@kit.edu) Endliche Automaten Berechenbarkeit Chomsky-Hierarchie

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz!

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Was muss angepasst werden?

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Anpassung: Zerteile Quadrate bis sie nicht mehr von Polygon geschnitten werden oder Größe 1 haben

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q = [0, U] [0, U] für Zweierpotenz U = 2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Quadrate und Kanten sind abgeschlossen Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Anpassung: Zerteile Quadrate bis sie nicht mehr von Polygon geschnitten werden oder Größe 1 haben

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz?

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Knoten im Kanteninneren Diagonalen für alle verbleibenden Quadrate?

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? zu kleine Dreieckswinkel Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein!

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein! nein! Balanciere Quadtree und füge ggf. einen Steinerknoten ein!

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein! nein! Balanciere Quadtree und füge ggf. einen Steinerknoten ein!

Algorithmus ErzeugeMesh(S) Input: Menge S oktilinearer, ganzzahliger Polygone in Q = [0, 2 j ] [0, 2 j ] Output: gültiges, adaptives Dreiecksnetz für S T CreateQuadtree T BalanceQuadtree(T ) D DCEL für Unterteilung von Q durch T foreach Facette f in D do if int(f) S then füge entsprechende Diagonale in f zu D hinzu else if Knoten nur an Ecken von f then füge eine Diagonale in f zu D hinzu else erzeuge Steiner-Punkt in der Mitte von f und verbinde in D zu allen Knoten auf f return D

Zusammenfassung Satz 4: Für eine Menge S disjunkter, oktilinearer, ganzzahliger Polygone mit Gesamtumfang p(s) in einem Quadrat Q = [0, U] [0, U] kann in O(p(S) log 2 U) Zeit ein gültiges adaptives Dreiecksnetz mit O(p(S) log U) Dreiecken erzeugt werden.

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. komprimierten Quadtree (s. Übung); eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05]

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. komprimierten Quadtree (s. Übung); eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. komprimierten Quadtree (s. Übung); eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees. (s. Übung)

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. komprimierten Quadtree (s. Übung); eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees. (s. Übung) Wie immer: höhere Dimensionen?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. komprimierten Quadtree (s. Übung); eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees. (s. Übung) Wie immer: höhere Dimensionen? Quadtrees lassen sich problemlos auf höhere Dimensionen verallgemeinern. Sie heißen dann auch Octrees.