Was sind entartete Polygone? Wie prüft man, ob ein bestimmtes Polygonpaar entartet ist oder nicht?
Was sind entartete Polygone? Wie prüft man, ob ein bestimmtes Polygonpaar entartet ist oder nicht?
Antworten:
Ein Polygon ist entartet, wenn einige seiner Eckpunkte aufeinander liegen. zB ist das Dreieck (0,0), (0,1), (0,0) entartet. Es hat 3 Seiten und 3 Eckpunkte, aber zwei Eckpunkte wiederholen sich. Es ist möglich, einen Scheitelpunkt mehrmals zu wiederholen (z. B. (0,0), (0,0), (0,0) ist ein weiteres entartetes Dreieck). Per Definition ist es einfach zu überprüfen, ob ein Polygon entartet ist oder nicht.
Aber wozu dienen entartete Polygone? Eine Anwendung aus der Grafikbeschleunigung (3D-Zeichnung) lautet wie folgt:
Beim 3D-Zeichnen verwenden GPUs normalerweise die Triangulation, um Bilder zu rendern. Der (einfache) Grund für die Verwendung von Dreiecken ist, dass es sich um möglichst einfache 2D-Objekte handelt und daher nicht viel Hardware benötigt wird.
Wenn wir ein komplexes 3D-Bild zeichnen möchten, müssen wir es aufgrund dieser GPU-Einschränkung in mehrere Dreiecke zerlegen. Wenn wir jedoch die GPU aufrufen, um jedes Dreieck separat zu rendern, wäre dies sehr langsam (aufgrund der Anzahl der Aufrufe). Der Dreiecksstreifen wird also verwendet, um die Anzahl der Anrufe an die GPU zu reduzieren. Eine gute Erklärung für Dreiecksstreifen finden Sie in der Microsoft-Dokumentation: Dreiecksstreifen. Sie finden auch das Wiki für: Dreiecksstreifen .
Das Problem tritt jedoch auf, wenn wir zwei separate Objekte in einem Streifen zeichnen möchten. In diesem Fall helfen entartete Dreiecke. Die GPU kann die entarteten Dreiecke erkennen und ihre Zeichnung überspringen. So können wir zwei separate Streifen mit einem entarteten Dreieck verbinden.
Ein entartetes Polygon hat eine Nullfläche.
Wie andere angemerkt haben, kommt es darauf an. Im Allgemeinen ist ein Polygon nicht entartet, wenn es keine anomalen Punkte aufweist, aber dies schiebt das Problem nur einen Schritt zurück. Was ist "anomal"?
Die eigentliche Antwort lautet, dass ein Polygon entartet ist, wenn es gegen die Spezifikation verstößt. Die etwas unhöfliche Antwort lautet, dass ein Polygon entartet ist, wenn es sich um einen Randfall handelt, den Ihr Algorithmus nicht verarbeiten kann.
Hier ist ein Beispiel aus der Welt von GIS. Die OGC Simple Features Specification enthält eine sehr sorgfältige Definition dessen, was ein Polygon "gültig" macht. Zitat aus Abschnitt 6.1.11.1:
Die Aussagen für Polygone (die Regeln, die gültige Polygone definieren) lauten wie folgt:
a) Polygone sind topologisch geschlossen;
b) Die Grenze eines Polygons besteht aus einer Reihe von Linearringen, die seine äußeren und inneren Grenzen bilden.
c) Keine zwei Ringe im Grenzkreuz und die Ringe in der Grenze eines Polygons dürfen sich an einem Punkt schneiden, jedoch nur als Tangente, z
Hinweis: Diese letzte Bedingung besagt, dass an einem Punkt, der den beiden Kurven gemeinsam ist, nahegelegene Punkte nicht gemeinsam sein können. Dies zwingt jeden gemeinsamen Punkt dazu, ein Tangentialpunkt zu sein.
e) Das Innere jedes Polygons ist eine zusammenhängende Punktmenge;
f) Das Äußere eines Polygons mit 1 oder mehr Löchern ist nicht verbunden. Jedes Loch definiert eine verbundene Komponente des Äußeren.
In den obigen Aussagen haben Innen, Verschluss und Außen die topologischen Standarddefinitionen. Die Kombination von (a) und (c) macht ein Polygon zu einer regulären geschlossenen Punktmenge.