Geometrische Algorithmen - TU Dresden · PDF fileOliver Deussen Geometrie 23. Computergraphik...
Transcript of Geometrische Algorithmen - TU Dresden · PDF fileOliver Deussen Geometrie 23. Computergraphik...
Computergraphik I
Geometrische Algorithmen
→ Bisher: Primitive erzeugen und darstellen
→ jetzt: “Rechnen mit Primitiven”
Also beispielsweise:
• Primitive (Linien, Dreiecke) schneiden
• konvexe Hulle bilden
• Voronoi-Diagramme ausrechnen
→ insbesondere: was geschieht bei vielen Primitiven?
⇒ O-Kalkul :-(
Oliver Deussen Geometrie 1
Computergraphik I
Analyse graphisch-geometrischer Probleme
Zuerst: Problemspezifikation
Beispiel: Nachster Nachbar
Gegeben:
Eine feste Menge M von n Punkten im IR2
Gesucht:
• Fur viele Punkte qi jeweils der nachste Nachbar in M .
(Die Anfragepunkte q sind nacheinander abzuarbeiten und sind bei
der Vorverarbeitung von M noch unbekannt.)
• Fur einen Punkt q der nachste Nachbar in M .
(Nur genau ein Anfragepunkt.)
Oliver Deussen Geometrie 2
Computergraphik I
• Zu jedem Punkt p ∈M der jeweils nachste Nachbar in M .
• Zu jedem Punkt p ∈ M die jeweils k nachsten Nachbarn in M ,
mit einer ebenfalls fest vorgegebenen Konstanten k.
• Zu einer gegebenen Menge Q ⊂ IR2 von Anfragepunkten
q1, q2, ..., qk (simultan) der jeweils nachste Nachbar in M .
Oder als andere Aufgabenstellung:
Oliver Deussen Geometrie 3
Computergraphik I
Gegeben:
Eine Menge M von Punkten im IR2
Gesucht: Eine effiziente Datenstruktur, die es erlaubt, folgende
Operationen in beliebiger Reihenfolge und Anzahl nacheinander aus-
zufuhren:
1. Erweitere M um einen neuen Punkt p ∈ IR2
2. Entferne aus M den Punkt p ∈M3. Bestimme zu q ∈ IR2die k nachsten Nachbarn in M
→ Dynamisierung
⇒ macht das Leben schwerer
Oliver Deussen Geometrie 4
Computergraphik I
Vorverarbeitung
→ wird Vorverarbeitung zugelassen, konnen Probleme oft
effizienter gelost werden
Gegeben:
Feste Menge M von n Punkten im IR2
Gesucht:
Vorverarbeitung von M , so daß zu jedem Anfragepunkt
q sehr schnell entschieden werden kann, welcher Punkt
von M zu q den geringsten Abstand hat.
Oliver Deussen Geometrie 5
Computergraphik I
Problemklassifikation
Klassifikation uber Raume
⇒ IR, IR2, IR3, ... , IRn).
hoherdimensionale Probleme:
• statistische Probleme mit vieldimensionalen Parametervektoren
• lineares Programmieren (engl. linear programming).
Oliver Deussen Geometrie 6
Computergraphik I
Klassifikation nach Objekttypen
Dim. Beispiele
0 Punkt1 Strecke, Halbstrahl, Gerade, Kurvenstuck, geschlossene
Kurve2 Rechteck, konvexes Polygon, einfaches Polygon, Polygon mit
Lochern, Halbebene, Polygon mit Asymptoten, gekrummtesFlachenstuck
3 Quader, konvexes Polyeder, Polyeder mit Asymptoten,Korper mit gekrummten Begrenzungsflachen
> 3 Halbraum, Polyeder, Polytop
→ n-dimensionale Objekte konnen in jeden Raum ab Dimension n+1eingebettet werden.
Oliver Deussen Geometrie 7
Computergraphik I
Klassifikation uber verwendete Grundoperationen
Gegeben
M1,M2,... geometrische Gebilde.
Gesucht
Mengenoperation BedeutungPradikat
M := M1 ∪M2 Zusammenfassung von zwei geometrischenGebilden zu einem Gesamtgebilde.
M := M1 ∩M2 Bestimmung des Schnittgebildes zweier geo-metrischer Gebilde, z.B. Schnitt zweierPolygone bestimmen.
M :=⋂Mi Bestimmung des Schnittgebildes vieler Ge-
bilde (z.B. Halbebenenschnitt).
Oliver Deussen Geometrie 8
Computergraphik I
M := M1 −M2 Entfernen von M2 aus M1.M :=
⋃i 6=j
Mi ∩Mj Alle paarweisen Schnittgebilde, z.B. alle Schnitt-
punke von n gegebenen Strecken in der Ebene.M1 ∈M2 Z.B. Punktlokalisation (M1 einelementig).M1 ⊂M2 Enthaltensein bei graphischen Objekten.
Oliver Deussen Geometrie 9
Computergraphik I
Hullenbildung uber Mengenoperationen:
Gegeben
Geometrisches Gebilde M1.
Gesucht
Konvexe Menge M2 mit M1 ⊂M2 und M2 minimal.
Zerlegungsprobleme (Triangulation):
Gegeben
Geometrisches Gebilde M
Gesucht
Dreiecke ∆i, so daß M = ∪ni=1∆i und Maß(∆i ∩∆j) = 0fur alle i 6= j.
Oliver Deussen Geometrie 10
Computergraphik I
Algorithmenentwurf und Analyse
→ neben Effizienz (O-Kalkul, Konstanten) sind im praktischen
Einsatz oft weitere Eigenschaften wichtig:
• Suche geeignete Reprasentation von graphischen Objekten und
passende interne Datenstrukturen.
• Suche Algorithmus mit geringstem Programmieraufwand.
• Suche Algorithmus mit asymptotisch bestem Zeitverhalten.
• Definiere typische Problemkomplexitaten in der Praxis und daraus
abgeleitete Abschatzungen fur konkrete Rechenzeiten.
• Bestimme Algorithmus mit bester Eignung fur die Implementierung
in professioneller Software.
• Bestimme bzw. verbessere die numerische Stabilitat.
Oliver Deussen Geometrie 11
Computergraphik I
• Bestimme Algorithmus mit bester Parallelisierbarkeit.
• Kombiniere Algorithmen einer bestimmten Problemklasse, um ins-
gesamt einen besseren Algorithmus zu erhalten.
Oliver Deussen Geometrie 12
Computergraphik I
Algorithmenmodell
→ fruher: Verwendung von Integer-Arithmetik angestrebt, da
Floating-Point Operationen vergleichsweise teuer
→ heute: etwa gleicher Aufwand
Daher folgendes Maschinenmodell sinnvoll (RAM-Modell):
• arithmetischen Operationen +,−, /, ∗, <,≤: Rechenzeit O(1)
• Zeiger- und Indexoperationen (B := A[i, j]): O(1)
• Speicherreservierung, Initialisierung fur Maschinenwort: O(1)
Oliver Deussen Geometrie 13
Computergraphik I
Algorithmenkomplexitat
Definition
Die Funktion T (P ) beschreibt die Anzahl der Zeiteinheiten (= Ele-
mentaroperationen), die der Algorithmus A benotigt, um die Einga-
bedaten P zu verarbeiten
→ eigentlich Interessant: was geschieht bei verschiedenen
Parametersatzen
Tmax(|P | = n) := Maximale Anzahl der Zeiteinheiten, die bei
Problemen der Komplexitat n notig ist.
Tmax(n) := maxP, |P |=n
T (P ).
Oliver Deussen Geometrie 14
Computergraphik I
Interessant - vor allem aus praxisbezogener Sicht - ist die durch-
schnittliche Zeit, die der Algorithmus zur Verarbeitung benotigt:
Tmittel(n) := MittelwertP, |P | = nT (P ).
minimale Zeit:
Tmin(n) := minP, |P |=n
T (P ).
es gilt (naturlich):
Tmin(n) ≤ Tmittel(n) ≤ Tmax(n).
Speicherbedarf: statt T schreibe S, Rest analog
Oliver Deussen Geometrie 15
Computergraphik I
Asymptotisches Wachstum, O-Kalkul
O(f(n)) := g(n)|∃ n0 und c > 0 : ∀n ≥ n0 gilt
g(n) ≤ c · f(n),d.h. g(n) wachst hochstens so stark wie f(n).
Ω(f(n)) := g(n)|∃ n0 und c > 0 : ∀n ≥ n0 gilt
g(n) ≥ c · f(n),d.h. g(n) wachst mindestens so stark wie f(n).
Θ(f(n)) := g(n)|∃ c1, c2, n0 : ∀n ≥ n0 gilt
c1 · f(n) ≤ g(n) ≤ c2 · f(n),d.h. g(n) wachst genau so stark wie f(n).
Also: g(n) = O(f(n)) und g(n) = Ω(f(n)).
Oliver Deussen Geometrie 16
Computergraphik I
Definition Untere Schranke
Fur ein bestimmtes algorithmisches Problem bezeichnen wir eine
Wachstumsfunktion f(n) als untere Zeitschranke, wenn fur jeden
Algorithmus zur Losung des Problems gilt:
Tmax(n) = Ω(f(n)).
→ Eine untere Schranke muß nicht erreichbar sein.
→ Ω(1) ist untere Schranke fur alle Algorithmen.
Oliver Deussen Geometrie 17
Computergraphik I
Definition Optimaler Algorithmus
Ein Algorithmus heißt optimal (bzgl. des Tmax-Zeitverhaltens), wenn
gilt:
Tmax(n) = O(f(n)),
mit: f(n) ist untere Schranke des algorithmischen Problems.
→ f(n) untere Schranke ⇒ Tmax(n) = Ω(f(n)) und damit
Tmax(n) = Θ(f(n)).
Oliver Deussen Geometrie 18
Computergraphik I
Beweis fur Optimalitat von Algorithmen
→ nutze den zu testenden Algorithmus zur Losung eines Standard-
problems (sortieren, suchen etc.) dessen untere Zeitschranke
man kennt (Problemreduktion).
→ geschieht Transformation auf eine Weise, daß Gesamtkomplexitat
von Algorithmus + Transformation untere Schranke des Standard-
problems nicht uberschreitet, so gilt:
Ein Algorithmus, der das konkrete Problem mit geringerer Zeitkom-
plexitat losen konnte, wurde auch den notwendigen Zeitaufwand zur
Losung des Standardproblems senken.
⇒ Widerspruch
Oliver Deussen Geometrie 19
Computergraphik I
Untere Schranken fur elementare Algorithmen
• SortierenDas Problem, n Zahlen zu sortieren, hat eine untere Schranke von:
Tmax(n) = Ω(n log n).
• ElementeindeutigkeitDas Problem, fur n gegebene Zahlen zu entscheiden, ob mindestens
zwei der Zahlen gleich sind, hat eine untere Schranke von:
Tmax(n) = Ω(n log n).
• Lokalisierung von Intervallen Das Problem, bei erlaubter Vor-
verarbeitung fur n gegebene sortierte Zahlen xi und eine beliebige
Oliver Deussen Geometrie 20
Computergraphik I
Zahl x ∈ [x1, xn) den Index i mit x ∈ [xi, xi+1) zu finden, hat eine
untere Schranke von:
Tmax(n) = Ω(log n).
• Minimum-Maximum-SucheDas Problem, fur n gegebene Zahlen das Minimum bzw. Maximum
zu bestimmen, hat eine untere Schranke von:
Tmax(n) = Ω(n).
Oliver Deussen Geometrie 21
Computergraphik I
Definition geometrischer Objekte
→ Gerade, Halbgerade, Ebene, Halbebene siehe fuhere Kapitel
Polygone, Polyeder (Bezeichnung im IRn, n > 2)
(a) Allgemeines Polygon; (b) einfaches Polygon.
Oliver Deussen Geometrie 22
Computergraphik I
Definition Polyeder
Ein Polyeder im IRk ist eine durch eine endliche Menge von Seiten-
polyedern der Dimension IRk−1 begrenzte Punktmenge. Die Rander
der Seitenpolyeder sind ihrerseits Polyeder der Dimension IRk−2 usw.
Eckpunkte werden als nulldimensionale Polyeder definiert.
Definition Polygon
Ein Polyeder der Dimension zwei heißt Polygon. Es wird dargestellt
durch eine geschlossene Streckenfolge p1→ p2→ ...→ pn→ p1 von
Punkten in einer Ebene. Die Randstrecken pi→ pi+1 heißen Kanten
oder Segmente; die von ihnen eingeschlossenen Punkte bilden das
Innere des Polygons. Die Endpunkte der Kanten werden als Poly-
goneckpunkte bezeichnet.
Oliver Deussen Geometrie 23
Computergraphik I
Definition Einfaches Polygon
Ein Polygon heißt einfach, wenn es keine Locher besitzt und weder
selbstuberlappend noch selbstberuhrend ist. In diesem Fall haben je
zwei nicht aneinandergrenzende Kanten keinen gemeinsamen Punkt.
→ Einfaches Polygon teilt die Ebene in zwei disjunkte Gebiete:
Innere und das Außere des Polygons.
Definition Konvexe Menge
Eine Menge P ist konvex, wenn mit pi, pj ∈ P stets auch die Strecke
pipj ganz in P enthalten ist.
Oliver Deussen Geometrie 24
Computergraphik I
Definition Konvexe Hulle
Die konvexe Hulle einer Punktmenge P im IRk ist der Rand der
kleinsten konvexen Teilmenge von IRk, die P enthalt.
Definition Konvexes Polygon
Ein einfaches Polygon P ist konvex, wenn sein Inneres eine konvexe
Menge ist.
Definition Sternpolygon
Ein einfaches Polygon P heißt Sternpolygon, wenn es einen Punkt
s im Inneren von P gibt, so daß die Halbgeraden von s durch alle
Eckpunkte pi von keiner Polygonkante geschnitten werden. Der
Punkt s heißt Sternpunkt.
Oliver Deussen Geometrie 25
Computergraphik I
s
s
Sternpolygone
Definition Kern eines Sternpolygons
Der Kern eines Sternpolygons wird aus der Menge aller Sternpunkte
s gebildet.
Oliver Deussen Geometrie 26
Computergraphik I
Kern
Kerne von Sternpolygonen.
Allgemein gilt die Beziehung:
konvexe Polygone ⊂ Sternpolygone ⊂⊂ einfache Polygone ⊂ allgemeine Polygone
Oliver Deussen Geometrie 27
Computergraphik I
Orientierung von Polygonen
Definition Normaldarstellung Ein Polygon ist in Normaldarstellung
gegeben, falls es als Folge von Eckpunkten (p1, ..., pn), im Uhrzeiger-
sinn (negativ) orientiert, vorliegt.
Gegeben
Die Eckpunktfolge (p1, ..., pn) eines einfachen Polygons im IR2.
Gesucht
Die Orientierung des Polygons, d.h. Antwort auf die Frage, ob das
Polygon im oder gegen den Uhrzeigersinn orientiert ist.
Oliver Deussen Geometrie 28
Computergraphik I
Orientierungsbestimmung eines Polygons
beginBestimme den Punkt pi mit minimaler x−Koordinate,
der zusatzlich eine maximale y−Koordinate hat;
Untersuche die Kanten pipi+1 und pipi−1;
if Kante pipi+1 liegt uber Kante pipi−1
then Orientierung im Uhrzeigersinn;
else Orientierung im Gegenuhrzeigersinn;
end;
Kante pipi+1 “uber” Kante pipi−1, wenn gilt:
pi+1.y − pi.ypi+1.x− pi.x
>pi.y − pi−1.y
pi.x− pi−1.x.
→ Tmax(n) = O(n).
Oliver Deussen Geometrie 29
Computergraphik I
Uhrzeigersinn Gegenuhrzeigersinn
Steigungsvergleich in x-minimalem Punkt.
Oliver Deussen Geometrie 30
Computergraphik I
Schnittbestimmung
→ zentrale geometrische Aufgabe
→ viele Losungsmoglichkeiten, viele unterschiedliche
Randbedingungen
→ daher zuerst: Schnitt isoorientierter Strecken
spater allgemeine Strecken
→ dient als Beispiel fur Grundkonzepte geometrischer Algorithmen
(Sweep-Line, Teile & Herrsche, Inkrementell, Randomisiert)
Oliver Deussen Geometrie 31
Computergraphik I
Schnitt isoorientierter Strecken
Gegeben
n vertikal bzw. horizontal liegende Strecken im IR2mit n = nv + nh.
(V = v1, v2, ... vnv vertikalen Strecken, H = h1, h2, ... hnhhorizontale Strecken
Gesucht
Menge S sich schneidender Streckenpaare (S ⊆ V ×H).
Einfacher Algoritmus (Brute Force):
→ teste jede vertikale mit jeder horizontalen Strecke
Tmax(nv, nh) = O(nv · nh) ≤ O(n2).
Oliver Deussen Geometrie 32
Computergraphik I
Losung mit Sweep-Verfahren
→ gangiges Verfahren zur Bearbeitung geometrischer Daten
→ Gerade (Sweep-Line) wird uber die Daten geschwenkt
(im hoherdimensioanlen: Ebene bzw. Hyperebenen)
→ Manipulation wird an den Objekten vorgenommen, die sich
in der lokalen Umgebung der Sweep-Line befinden
(meistens: die von ihr geschnitten werden)
Damit: Aufteilung der Daten in drei Teilmengen
1. schon bearbeitete Objekte
2. aktuell zu bearbeitende Objekte
3. noch zu bearbeitende Objekte
→ bei genugender Lokalitat der Objekte: sinnvolle Aufteilung
Oliver Deussen Geometrie 33
Computergraphik I
Der Algorithmus verwendet folgende Datenstrukturen:
1. X-Ordnung:Enthalt alle x-Ereignisse in aufsteigend sortierter Folge (z.B. Liste).
x-Ereignisse sind:
• x-Werte aller linken Endpunkte horizontaler Strecken xl(hi)
• x-Werte aller rechten Endpunkte horizontaler Strecken xr(hi)
• x-Werte vertikaler Strecken x(vj)
2. Y-Ordnung (Sweep-Line-Status):Enthalt alle Strecken aus H, die von der Sweep-Line geschnitten
oder beruhrt werden, sortiert nach y(hi) (z.B. als AVL-Baum mit
doppeltverketteten Blattern, ein sog. Bereichssuchbaum)
Oliver Deussen Geometrie 35
Computergraphik I
→ Algorithmus: lasse Sweep-Line in pos. x-Richtung laufen, halte
bei jedem x-Ereignis an
h1
h2 v1
h3
h4
h5v2
v3
(h1 )
(h2 ,h
1 )
(h2 )
(h2 ) × v
1
(h2 ,h
3 )
(h3 )
(h4 ,h
3 )(h
5 ,h4 ,h
3 )
(h5 ,h
4 ,h3 ) × v
2
(h5 ,h
4 )(h
5 ,h4 ) × v
3
(h5 )
()Y-O
rdnung
x
Schnitt von isoorientierten Strecken
Oliver Deussen Geometrie 36
Computergraphik I
Ereignistypen:
• Linker Endpunkt einer horizontalen Strecke erreicht
⇒ fuge diese in Y-Ordnung ein
• Rechter Endpunkt einer horizontalen Strecke erreicht
⇒ losche diese aus Y-Ordnung
• x-Koordinate einer vertikalen Strecke
⇒ schneide mit allen in der Y-Ordnung enthaltenen Strecken
zusatzlich:
• keine Uberlappungen von horizontalen Strecken und von vertikalen
Strecken
• keine reinen Beruhrungen von Strecken
Oliver Deussen Geometrie 37
Computergraphik I
Algorithmus: Schnittbestimmung isoorientierter Strecken mitSweep-Line
beginX-Ordnung = sortierte Folge der x-Ereignisse;Y-Ordnung = ∅;while X-Ordnung nicht leer do begin
(* 1 *)xakt =kleinster x-Wert aus X-Ordnung;Losche kleinsten x-Wert aus X-Ordnung;case xakt(* 1a *)
ist linker Endpunkt einer horizontalen Strecke hi :Fuge hi in Y-Ordnung ein;
(* 1b *)ist rechter Endpunkt einer horizontalen Strecke hi :
Losche hi aus Y-Ordnung;(* 1c *)
ist x-Wert einer verikalen Strecke vj:
Oliver Deussen Geometrie 38
Computergraphik I
Bestimme alle Schnittpunkte von vj mit den hi in derY-Ordnung und fuge die korrespondierenden sich schneidendenStreckenpaare in S ein;
end;end;
(* 2 *)end;
Oliver Deussen Geometrie 39
Computergraphik I
Zeitkomplexitat:
VorverarbeitungElemente einlesen: O(n)Y-Ordnung initialisieren: O(1)X-Ordnung aufbauen und sortieren: O(n log n)
Arbeitsschleifejeweils kleinsten x-Wert auslesen: O(n)n Strecken in Y-Ordnung einordnenund herausnehmen (z.B. mit AVL-Baum) O(n log n)n Anfragen an Y-Ordnung undAusgabe aller k Schnittpaare: O(k + n log n)(Hierbei ist k =
∑i ki die Gesamtanzahl
der gefundenen Schnittpunkte, pro viensteht bei der Intervallanfrage andie Y -Ordnung Tmax(n) = O(ki + log n))Insgesamt: O(k + n log n)
Oliver Deussen Geometrie 40
Computergraphik I
→ Parameter k nimmt Werte zwischen 0 und O(n2) an
⇒ kann nicht vom Term O(n log n) geschluckt werden
Satz
Die Bestimmung aller Schnittpunkte isoorientierter Strecken im
IR2benotigt einen Zeitaufwand von Tmax(n) = O(k + n log n), und
das ist optimal.
Beweis
Wird der Algorithmus so implementiert, daß er auch Beruhrungen
von degenerierten, auf einen Punkt reduzierten Linien korrekt meldet,
so kann man mit ihm das Problem der Elementeindeutigkeit von n-
Werten x1, ..., xn losen.
Oliver Deussen Geometrie 41
Computergraphik I
Dazu wird das Problem durch Umwandeln der xi mit linearem Zeitauf-
wand in degenerierte Strecken (xi, 0) umgeformt. Der Algorithmus
kann diese Strecken auf Gleichheit testen und damit die Elemen-
teindeutigkeit feststellen. Konnte er es mit geringerem Aufwand
als Tmax(n) = O(n log n), so ware auch die Elementeindeutigkeit
schneller gelost. Der Teilterm k ist optimal, weil er genau den
Reporting-Aufwand des Algorithmus angibt, also auf keinen Fall un-
terboten werden kann.
Oliver Deussen Geometrie 42
Computergraphik I
Losung mit Teilen & Herrschen
→ zerlege Szene rekursiv, lose Problem in Teilbereichen
Oliver Deussen Geometrie 43
Computergraphik I
Algorithmenschema
1. zerlege Datenmenge rekursiv jeweils in zwei bzw. vier Teilszenen
→ hierbei: teile an Koordinatenmitte oder am Median-Element
(Einzelne Strecken evtl. in kurzere Stucke zerlegen)
2. Teilszene wird dann nicht weiter zerlegt, wenn sich kein Rechen-
zeitvorteil mehr ergibt
in Teilszene: einfacher Schnittalgorithmus (T (n) = O(n2))
→ je nach Implementierung des Schnittalgorithmus:
unterschiedliche Zellgroße
Oliver Deussen Geometrie 44
Computergraphik I
Schnitt isoorientierter Strecken mit Teilen & Herrschen
begin
Zerlege Szene S in Unterszenen S1, S2, S3, S4 mit n1, n2, n3, n4 Strecken;
(* n ≤ n1 + n2 + n3 + n4 ≤ 2n *)
if (c0 · n2 ≤ co(n21 + n2
2 + n23 + n2
4) + c1(n1 + n2 + n3 + n4))
then Berechne Schnittpunkte in S direkt;
else
begin
Divide ( S1 );
Divide ( S2 );
Divide ( S3 );
Divide ( S4 );
end;
end;
Oliver Deussen Geometrie 45
Computergraphik I
Komplexitatsanalyse
→ teile Zellen an Medianelement vi bzgl. x-Koordinate bzw.
hi bzgl. y-Koordinte
→ Suche Medianelement: Tmax(ni) = O(ni)
→ Abbruchkriterium: ni ≤ 8 ⇒ Schnittalgorithmus: O(1)
Rekkurenzrelation:
gunstigster Fall: T (n) = 4 · T (n4) + c · n Tmax(n) = O(n log n)ungunstigster Fall: T (n) = 4 · T (n2) + c · n Tmax(n) = O(n2)
→ Rechenzeit szenenabhangig
→ Term k fallt weg, weil Reporting-Aufwand in Rekkurenz-
relation eingeht.
Oliver Deussen Geometrie 46
Computergraphik I
Losung mit Zellraster
fur n Objekte Oi in der Ebene mit Koordinaten (xi1, yi1), ..., (xik, yik)
Algorithmenschema: Zellrasterinitialisierung
(1) Bestimme die Werte xmin, xmax, ymin, ymax uber alle beteiligten
Punkte.
(2) Definiere ein aquidistantes Zellraster der Große√n×√n,
als Array [0 . . .m, 0 . . .m] of Zelle, (m = b√n c).
Ein Punkt (x, y) liegt in der Zelle mit dem Index [I(x), I(y)],wobei fur I(x) gilt: I(x) :=
⌊x− xmin
xmax − xmin ·m⌋
, I(y) analog.
(3) Lege in der Datenstruktur fur jede Zelle eine Liste derjenigen
Objekte Oi an, die die Zelle”geometrisch“ beruhren
oder schneiden.
Oliver Deussen Geometrie 47
Computergraphik I
Komplexitatsanalyse
→ Bildung Bounding-Box (1): O(n)
→ Initialisierung Zellraster-Datenstruktur (2):
Tmax(n) = O(√n×√n) = O(n).
→ Rechenzeitaufwand fur (3) ist szenenabhangig
Objekte gross
⇒ einzelne Objekte schneiden in einer Richtung
bis zu O(√n) Zellen
⇒ Tmax(n) = O(n ·√n)
Oliver Deussen Geometrie 48
Computergraphik I
→ uberlineares Wachstum in Vorverarbeitung unerwunscht
→ in gewissen Grenzen: Linearisierung durch Vergroberung
der Zellen moglich
→ Bestimme Breite der Objekte (x-Spanne):
xspanne :=1n
(∑i
|ximax − ximin|
).
→ rastere so, daß Zellen etwa xspanne breit sind:
mx∼= min
√n,
(xmax − xmin)xspanne
.
→ my analog
Oliver Deussen Geometrie 49
Computergraphik I
Losung isoorientierter Streckenschnitt mit Zellraster
→ bisher Tmax(n) = O(k + n log n) mit k ∈ [O(n), O(n2)]
→ jetzt: bei Gleichverteilung O(n)
zu testende Zellen
Oliver Deussen Geometrie 50
Computergraphik I
Algorithmus zur Schnittbestimmung (n = nv + nh):
(1) (* Vorverarbeitung *)
Lege Zellraster Z der Große b√nc × b
√nc uber die Daten;
Trage horizontale Strecken h1, h2, . . . hnh in diejenigen
Zellen ein, die sie beruhren;
M = v1, v2, . . . , vnv;
(2) while M 6= ∅ do begin
Entferne ein Element v aus M und bestimme alle Zi,
die von v beruhrt werden;
Schneide v mit allen hj, die in diesen Zellen vermerkt sind;
end;
Oliver Deussen Geometrie 51
Computergraphik I
Komplexitatsanalyse
Vorverarbeitung: O(n)
bei Gleichverteilung der Endpunkte der Strecken [0, 1]:
mittlere Lange: l = 12
Zellen pro Strecke: ns =√n
2
Strecken pro Zelle: nz =√n
2
→ Anzahl Schnittoperationen pro Strecke v
nz · ns =n
4= O(n)
→ insgesamt O(n2) Schnittoperationen
Oliver Deussen Geometrie 52
Computergraphik I
Rastergunstigen Szenen
Definition: Rasterkomplexitat einer Szene
Eine Szene S hat eine Rasterkomplexitat K ∈ IN , wenn beim Ein-
tragen in ein b√nc × b
√nc-Raster hochstens K Teilobjekte von S in
eine Zelle des Rasters einzutragen sind.
Definition: K0-Rastergunstige Szene
Eine Szene gehort zur Klasse der K0-rastergunstigen Szenen, wenn
fur ihre Rasterkomplexitat K gilt: K ≤ K0.
→ Schnitt fur rastergunstige Szenen: Tmax(n) = O(n).
Oliver Deussen Geometrie 53
Computergraphik I
Komplexitat Schnittbestimmung mit Zellraster
Normale Szene Rastergunstig
Vorverarbeitung: O(n) +O(nv ·√n) O(n) +O(K0 · nv)
Arbeitsschleife: O(n2) O(K20 · n)
Insgesamt: O(n2) O(n)
→ starkere Abbhangigkeit des Algorithmus von den Eingabedaten
als andere Verfahren
→ weiterer Vorteil: einfach zu implementieren
Oliver Deussen Geometrie 55
Computergraphik I
Schnitt beliebiger Strecken
Gegeben
n Strecken bzw. Segmente S = s1, s2, .., sn in der Ebene, jedes siist durch seine Eckpunkte gegeben.
Gesuchta) Feststellung, ob sich zwei der Segmente schneiden
b) Alle schneidenden Paare (si, sj)
→ Brute-Force: Aufgabenstellung a): Tmax(n) = O(n2)
→ Shamos und Hoey (1976), Sweep-Line: Tmax(n) = O(n log n)
→ Bentley und Ottmann (1979) fur b): Tmax(n) = O((n+ k) logn)
Oliver Deussen Geometrie 56
Computergraphik I
Der Bentley-Ottmann Algorithmus
→ nun Y -Ordnung nicht mehr statisch:
Gilt fur die Strecken S1, S2 in der y-Ordnung:
S1 oberhalb S2, so gilt nach einem gemeinsamen
Schnitt:S2 oberhalb S1
→ Haltepunkte Sweep-Line nun zusatzlich an Schnittpunkten
Oliver Deussen Geometrie 57
Computergraphik I
Benotigte Datenstrukturen sind (n ∈ IN : Anzahl Strecken):
X-Ordnung (Q) als Prioritats-Warteschlange oder AVL-Baum
insert(s,Q) O(log n)minx(Q) O(1)minxremove(Q) O(log n)
Y-Ordnung (L) als balancierter AVL-Baum
insert(s, L) O(log n)delete(s, L) O(log n)predy(s, L) O(log n)succy(s, L) O(log n)swap(s1, s2, L) O(log n)
Oliver Deussen Geometrie 58
Computergraphik I
Schnittbestimmung allgemeiner Strecken mit Sweep-Line
begin
Q := Alle Anfangs- und Endpunkte, geordnet nach x-Koordinate;
L := ∅;while Q nicht leer do begin
p := minx(Q);
minxremove(Q);
if p linker Endpunkt eines Segments s
then begin
insert(s, L);
s := succy(s, L);
s := predy(s, L);
if s ∩ s 6= ∅ then insert(s ∩ s, Q);
if s ∩ s 6= ∅ then insert(s ∩ s, Q);
Oliver Deussen Geometrie 59
Computergraphik I
end else begin
if p rechter Endpunkt eines Segments s
then begin
s := succy(s, L);
s := predy(s, L);
if s ∩ s 6= ∅then insert(s ∩ s, Q);
delete(s, L);
end;
else (* p ist Schnittpunkt von s und s *)
begin
Ausgeben von p;
swap(s, s, L); (* Vertausche s und s in L*)
t := predy(s, L);
Oliver Deussen Geometrie 60
Computergraphik I
if s ∩ t 6= ∅then insert(s ∩ t, Q);
t := succy(s, L);
if s ∩ t 6= ∅then insert(s ∩ t, Q);
end;
end;
end; (* while *)
end
→ alle Operationen: O(log n)
→ y-Koordinaten der Strecken konnen nicht mehr als Schlussel
verwendet werden, daher Geradengleichungen (a · x+ b)
als Schlussel
Oliver Deussen Geometrie 61
Computergraphik I
s1
s2
s3
s4
s5
s6
() (s1 )
(s2 ,s1 )(s2 )(s2 ,s4 )(s3 ,s2 ,s4 )(s2 ,s3 ,s4 )
(s2 ,s4 )(s4 )(s5 ,s4 )(s6 ,s5 ,s4 )
(s5 ,s6 ,s4 )
(s5 ,s4 ,s6 )(s5 ,s4 )
(s5 )()Y
-Ordnung
x
Bentley-Ottmann Algorithmus (unten Y-Ordnung)
Oliver Deussen Geometrie 62
Computergraphik I
Komplexitatsanalyse
Arbeitsschleifejeweils kleinsten x-Wert auslesen
und loschen: O((n+ k) log(n+ k))n Strecken in Y-Ordnung einordnen
und herausnehmen (z.B. mit AVL-Baum) O(n log(n))k Strecken in Y-Ordnung vertauschen O(k log(n))k Schnittpunkte in X-Ordnung einfugen O(k log(n+ k))Insgesamt: O((n+ k) log(n+ k))
→ k = O(n2) daher log(n+ k) = O(log n)
Oliver Deussen Geometrie 63
Computergraphik I
Schnitt Gerade mit Polygon
→ uber Bentley-Ottmann Algorithmus: Tmax(n) = O(n log n)
→ nichtlinearer Aufwand durch Sortierung der Kanten
→ in einem einfachen Polygon: implizite Sortierung, da sich
Polygonkanten nicht schneiden durfen
(geschlossene Jordankurve)
⇒ Spezialfall des Schnittproblems, kann effizienter gelost werden
→ Hoffman, Mehlhorn et al. (1986): Tmax(n) = O(n)(bei sortierter Schnittpunktausgabe)
Oliver Deussen Geometrie 64
Computergraphik I
1 23
4567891011
1213 14 151617 18 19
20
1817 910 78 56 34
12111920 1413
1516
21
Schnitt von Gerade und Polygon; (b) zugehorige Baumstruktur
Oliver Deussen Geometrie 65
Computergraphik I
→ erstens: Polygonkanten durchlaufen und Schnittpunkte
S = s1, s2, .., sk(k ≤ n) in Durchlauf-Reihenfolge
ermittelt ⇒ Tmax(n) = O(n).
→ zwischen Schnittpunkten verlauft Polygon ganz uber
oder ganz unter x-Achse
→ topologisch aquivalent zu Halbkreisen ober- und unterhalb
der x-Achse
1 20 17 18 19 16 11 10 9 12 13 8 7 6 5 14 15 4 3 2
Oliver Deussen Geometrie 66
Computergraphik I
→ baue Baum auf: Knoten Schnittpunktpaare, die durch uber
der Schnittgerade liegende Polygonteile direkt verbun-
den sind.
→ Vaterknoten: alle Kinder bezeichnen Halbkriese, die innerhalb
des Halbkreises des Vaters liegen
→ durchlaufen des Baumes in Tiefensuche (Ausgabe
linker Punkt, Ausgabe Kinder, Ausgabe rechter Punkt)
liefert Sortierreihenfolge
Oliver Deussen Geometrie 67