Geometrische Algorithmen - TU Dresden · PDF fileOliver Deussen Geometrie 23. Computergraphik...

67
Computergraphik I Geometrische Algorithmen Bisher: Primitive erzeugen und darstellen jetzt: “Rechnen mit Primitiven” Also beispielsweise: Primitive (Linien, Dreiecke) schneiden konvexe H¨ ulle bilden Voronoi-Diagramme ausrechnen insbesondere: was geschieht bei vielen Primitiven? O-Kalk¨ ul :-( Oliver Deussen Geometrie 1

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

Sweep-Line

y

x

z

x

y

Sweep-Plane

Sweep-Verfahren

Oliver Deussen Geometrie 34

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

Szene: (a) rastergunstig; (b) rasterungunstig.

Oliver Deussen Geometrie 54

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