Haloed-Line-Algorithmus

Der Haloed-Line-Algorithmus i​st ein Verfahren d​er Computergrafik, u​m Drahtgittermodelle o​der allgemeine dreidimensionale Linien darzustellen. Die gezeichneten Linien erhalten d​abei eine Kontur („Halo“), d​ie dahinterliegende Linien verdeckt. Dadurch w​ird der Eindruck v​on Räumlichkeit verstärkt. Wenn d​ie Breite d​es Halos groß g​enug gewählt wird, entsteht d​er Effekt, d​ass wie b​ei einer vollständigen Verdeckungsberechnung n​ur die sichtbaren Flächen angezeigt werden.

Ein Drahtgittermodell ohne und mit Halo

Funktionsweise

Vorbereitung

Geometrie einer Linie mit Halo. Die hinter der Linie A liegende Linie B wird vom Halo verdeckt.

Der Haloed-Line-Algorithmus besteht aus einer Vorbereitungs- und einer Anzeigeroutine. Bei der Vorbereitung wird das Bild in ein Gitter eingeteilt, dessen Feinheit von der durchschnittlichen Linienlänge abhängt. Zusätzlich werden für jede Linie die Koeffizienten der entsprechenden Geradengleichung gespeichert. Für jede Linie werden die Gitterzellen ermittelt, durch die sie läuft. In einer Liste werden zu jeder Zelle die dazugehörigen Linien als vermerkt und nach Zelle sortiert.

Für jede Zelle werden hindurchlaufende Linien und paarweise geprüft, ob sie einander schneiden. Ist dies der Fall, so wird der Schnittpunkt beider Linien ermittelt. Außerdem wird bestimmt, welche der Linien am Schnittpunkt die kleinere z-Koordinate besitzt, also dem Betrachter näher liegt. Liegt näher, so wird der Winkel zwischen und berechnet. Die Ergebnisse werden als in einer Tabelle gespeichert. Sobald alle Gitterzellen abgearbeitet wurden, wird die Tabelle nach sortiert. Linien, die nicht in der Tabelle eingetragen sind, schneiden keine anderen Linien und sind somit stets sichtbar; sie werden ebenfalls in die Tabelle eingetragen.

Anzeige

Um die Linien anzuzeigen, wird die Tabelle Eintrag für Eintrag durchgegangen. Für jeden Eintrag werden mittels und die Punkte und berechnet, an denen das Halo auf der Linie um den Schnittpunkt herum aufhört und wieder anfängt. Die Paare und werden in einer Tabelle gespeichert. Zusätzlich werden die Paare und gespeichert, wobei und die Endpunkte der Linie sind.

Die so entstandene Tabelle wird nun nach sortiert und der Reihe nach durchgegangen, wobei die jeweiligen Werte +1 oder −1 summiert werden. Wenn die Summe 1 beträgt, wird angefangen, die Linie zu zeichnen, wenn sie einen Wert ≤0 erreicht, wird die Zeichnung der Linie wieder gestoppt.

Diese Prozedur ist beendet, wenn alle Einträge der Tabelle abgearbeitet wurden.

Literatur

  • Arthur Appel u. a.: The Haloed Line Effect for Hidden Line Elimination. ACM SIGGRAPH Computer Graphics 13, 2 (Aug. 1979): 151–157, ISSN 0097-8930
  • David F. Rogers: Procedural Elements for Computer Graphics. WCB/McGraw-Hill, Boston 1998, ISBN 0-07-053548-5
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.