18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.5. GEOMETRISCHE ALGORITHMEN UND REELLE RAM 151<br />

Falls die L<strong>in</strong>ie L(a, b) die Gleichung y = kx + q hat, liegt r genau dann über dieser<br />

L<strong>in</strong>ie, wenn<br />

ry > krx + q.<br />

Auch diese Entscheidung dauert O(1) Schritte.<br />

Beispiel 3 (DAS INNERE EINES POLYGONS). E<strong>in</strong>gabe: E<strong>in</strong> konvexes Polygon<br />

P und e<strong>in</strong> Punkt r.<br />

Ausgabe: Entscheidung, ob r im Inneren von P liegt.<br />

Bemerkung 1. E<strong>in</strong> Polygon P ist e<strong>in</strong>e Liste von Punkten, die als die Ecken von<br />

P bezeichnet werden. E<strong>in</strong> Polygon P = (v0, v1, . . .,vn−1) heißt simple, falls sich die<br />

Strecken L(vi, vi+1) (wobei i+1 modulo n berechnet wird) nur <strong>in</strong> den ” erwarteten“<br />

Ecken schneiden, d.h., der Durchschnitt von L(vi, vi+1) und L(vj, vj+1) mit i =<br />

j ist vi, falls j + 1 = i, oder vj, falls i + 1 = j, und ansonsten leer. Falls wir<br />

aus der Ebene die Strecken e<strong>in</strong>es simplen Polygons P entfernen, erhalten wir zwei<br />

zusammenhängende Teile, e<strong>in</strong>en gebundenen, der das Innere von P genannt wird,<br />

und e<strong>in</strong>en weiteren, der als das Äußere von P bezeichnet wird.<br />

E<strong>in</strong> simples Polygon P heißt konvex, falls se<strong>in</strong> Inneres jede Strecke enthält, deren<br />

Endpunkte es enthält. Beispiele:<br />

•<br />

<br />

<br />

<br />

•<br />

<br />

•<br />

<br />

<br />

<br />

<br />

<br />

• <br />

• • <br />

•<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

•<br />

•<br />

<br />

<br />

• <br />

•<br />

• <br />

•<br />

<br />

<br />

<br />

•<br />

<br />

•<br />

•<br />

<br />

• <br />

<br />

<br />

<br />

• <br />

Konvexes Polygon Nichtkonvexes Polygon Nichtsimples Polygon<br />

E<strong>in</strong> konvexes Polygon wird als e<strong>in</strong>e Liste v0, v1, . . . , vn−1 von Punkten angegeben,<br />

wobei wir annehmen, dass die Orientierung im Uhrzeigers<strong>in</strong>n erfolgt und ke<strong>in</strong>e zwei<br />

benachbarten Ecken auf der gleichen L<strong>in</strong>ie liegen:<br />

v0<br />

vn−1<br />

v1<br />

·<br />

·<br />

·<br />

• • <br />

•<br />

<br />

<br />

<br />

<br />

•<br />

• <br />

<br />

<br />

<br />

<br />

•<br />

•<br />

<br />

<br />

vn−2<br />

Um unseren Algorithmus zu vere<strong>in</strong>fachen, nehmen wir zusätzlich an, dass die x-<br />

Koord<strong>in</strong>aten der Punkte v0, . . . , vn−1 vone<strong>in</strong>ander verschieden s<strong>in</strong>d.<br />

Algorithmus für das INNERE EINES POLYGONS<br />

1. Wir wählen e<strong>in</strong>en Punkt p im Inneren von P.<br />

2. Die Halbl<strong>in</strong>ien von p zu den Ecken v0, . . .,vn−1 teilen die Ebene <strong>in</strong> n Sektoren.<br />

Wir bestimmen den Sektor, <strong>in</strong> dem sich der gegebene Punkt r bef<strong>in</strong>det, <strong>in</strong><br />

O(log n) Schritten wie folgt.<br />

v2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!