Graphics Reference
In-Depth Information
Abb. 9.12 Skalierung der Z V -Koordinaten
Im ersten Schritt ist eine affine Abbildung der Szenerie - genaugenommen des
ausgewählten Clippingbereiches - auf den Bereich des Bildspeichers vorzunehmen.
Hierzu werden die Seitenkoordinaten des View- bzw. Projektionssystems auf die
Größe des Bildspeichers ( Size.Width, Size.Height ) transformiert und der Ursprung
des Projektionssystems in den Ursprung der Gerätekoordinaten verschoben. Dies
erfolgt noch ohne Verlust an Genauigkeit mit Gleitkommaarithmetik. Das Ergebnis
sind Seitenkoordinaten in der Größenordnung der Gerätekoordinaten jedoch ohne
den Übergang zu ganzzahligen Gerätekoordinaten.
Anschließend werden die Z V -Koordinaten skaliert (Abb. 9.12 ). Die Optik der
ganzen Szenerie wird dadurch in Z-Richtung stark verlängert, was nicht weiter
stört, denn auf Darstellungen in der XY-Ebene wirken sich Skalierungen in Z-
Richtung nicht aus. Da der Tiefe wert nur 2 Byte groß sein soll, darf die Tiefe nur
zwischen 0 und 32 767 liegen. Zweckmäßig begrenzt man auf Z V < 30 000 ,damit
geringe Abweichungen später nicht zu einem 2-Byte-Überlauf führen. Die in den
Geräteursprung verschobenen und skalierten Projektionskoordinaten XYZ V stehen
weiterhin als „genaue“ Gleitkommawerte zur Verfügung.
Bevor mit der Verarbeitung der Facetten begonnen wird, ist der Hintergrund zu
initialisieren. Hierzu gibt es mehrere Möglichkeiten:
Setzen einer gleichmäßigen Hintergrundfarbe,
Übernehmen einer Textur,
Kopieren einer Bild- oder Motivvorlage
in den Farbe speicher. Der Tiefe wert wird hierfür mit 32 767 festgelegt und liegt
damit noch hinter der größten Z-Tiefe der Szenerie, die wir bei 30 000 begrenzt
haben.
Um die Facetten nacheinander in den Bildspeicher zu schreiben, nutzt man ein
sogenanntes Scanlineverfahren, bei dem die Pixel zeilenweise oder spaltenweise
untersucht werden. Wie in Abb. 9.13 dargestellt, wird hier eine vertikale Scanline
verwendet. Mit dieser ist die interne Adressrechnung für den Bildspeicher schnel-
ler als bei einer Scanline-Zeile; siehe Abschn. 6.1.1 ‚Arrays'. Für das dargestellte
Dreieck (Abb. 9.13 ) überstreicht unsere Scanline alle Spalten des Bildspeichers von
Search WWH ::




Custom Search