Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Haloed-Line-Algorithmus – Wikipedia
Haloed-Line-Algorithmus – Wikipedia 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie
Ein Drahtgittermodell ohne und mit Halo

Der Haloed-Line-Algorithmus ist ein Verfahren der Computergrafik, um Drahtgittermodelle oder allgemeine dreidimensionale Linien darzustellen. Durch diese Form der Oberflächendarstellung erhalten die gezeichneten Linien eine Kontur („Halo“), die dahinterliegende Linien verdeckt. Diese Perspektive verstärkt den Eindruck von Räumlichkeit. Wenn die Breite des Halos groß genug gewählt wird, entsteht der Effekt, dass wie bei einer vollständigen Verdeckungsberechnung nur die sichtbaren Flächen angezeigt werden.

Funktionsweise

[Bearbeiten | Quelltext bearbeiten]

Vorbereitung

[Bearbeiten | Quelltext bearbeiten]
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 z = a x + b y + d {\displaystyle z=ax+by+d} {\displaystyle z=ax+by+d} gespeichert. Für jede Linie L i {\displaystyle L_{i}} {\displaystyle L_{i}} werden die Gitterzellen ermittelt, durch die sie läuft. In einer Liste werden zu jeder Zelle die dazugehörigen Linien als ( C i , j , L i ) {\displaystyle (C_{i,\,j},\,L_{i})} {\displaystyle (C_{i,\,j},\,L_{i})} vermerkt und nach Zelle sortiert.

Für jede Zelle werden hindurchlaufende Linien L i {\displaystyle L_{i}} {\displaystyle L_{i}} und L j {\displaystyle L_{j}} {\displaystyle L_{j}} paarweise geprüft, ob sie einander schneiden. Ist dies der Fall, so wird der Schnittpunkt I {\displaystyle I} {\displaystyle I} beider Linien ermittelt. Außerdem wird bestimmt, welche der Linien am Schnittpunkt die kleinere z-Koordinate besitzt, also dem Betrachter näher liegt. Liegt L i {\displaystyle L_{i}} {\displaystyle L_{i}} näher, so wird der Winkel θ {\displaystyle \theta } {\displaystyle \theta } zwischen L i {\displaystyle L_{i}} {\displaystyle L_{i}} und L j {\displaystyle L_{j}} {\displaystyle L_{j}} berechnet. Die Ergebnisse werden als ( L i , I , θ ) {\displaystyle (L_{i},\,I,\,\theta )} {\displaystyle (L_{i},\,I,\,\theta )} in einer Tabelle T {\displaystyle T} {\displaystyle T} gespeichert. Sobald alle Gitterzellen abgearbeitet wurden, wird die Tabelle T {\displaystyle T} {\displaystyle T} nach L i {\displaystyle L_{i}} {\displaystyle L_{i}} 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

[Bearbeiten | Quelltext bearbeiten]

Um die Linien anzuzeigen, wird die Tabelle T {\displaystyle T} {\displaystyle T} Eintrag für Eintrag durchgegangen. Für jeden Eintrag werden mittels H {\displaystyle H} {\displaystyle H} und θ {\displaystyle \theta } {\displaystyle \theta } die Punkte I 1 {\displaystyle I_{1}} {\displaystyle I_{1}} und I 2 {\displaystyle I_{2}} {\displaystyle I_{2}} berechnet, an denen das Halo auf der Linie um den Schnittpunkt herum aufhört und wieder anfängt. Die Paare ( I 1 , − 1 ) {\displaystyle (I_{1},-1)} {\displaystyle (I_{1},-1)} und ( I 2 , + 1 ) {\displaystyle (I_{2},+1)} {\displaystyle (I_{2},+1)} werden in einer Tabelle S {\displaystyle S} {\displaystyle S} gespeichert. Zusätzlich werden die Paare ( E 1 , + 1 ) {\displaystyle (E_{1},+1)} {\displaystyle (E_{1},+1)} und ( E 2 , − 1 ) {\displaystyle (E_{2},-1)} {\displaystyle (E_{2},-1)} gespeichert, wobei E 1 {\displaystyle E_{1}} {\displaystyle E_{1}} und E 2 {\displaystyle E_{2}} {\displaystyle E_{2}} die Endpunkte der Linie sind.

Die so entstandene Tabelle S {\displaystyle S} {\displaystyle S} wird nun nach L i {\displaystyle L_{i}} {\displaystyle L_{i}} 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 T {\displaystyle T} {\displaystyle T} abgearbeitet wurden.

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • 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
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Haloed-Line-Algorithmus&oldid=242086467“
Kategorien:
  • Bildsynthese
  • Algorithmus (Computergrafik)

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id