Graphics Reference
In-Depth Information
schirmkoordinaten für hvt -System mit Ursprung links oben; Z-Skalierung
für die Tiefe.
Call Umsetzen()
Auflösen viereckiger Facetten in zwei Dreiecke.
Call ZBuffer()
Hintergrund und Tiefe des Bildspeichers einstellen
' Bildspeicher, Hintergrund und Tiefe einstellen
HorzPic = picBild.Size.Width
VertPic = picBild.Size.Height
kanz = (HorzPic + 1) * (VertPic + 1)
ReDim Farbe(kanz)
ReDim Tiefe(kanz)
For idx = 0 To kanz
Farbe(idx) = Color.FromArgb(255, 255, 255, 255)
Tiefe(idx) = 32767
Next
Ecken der Dreiecke umordnen auf Standardablauf; Ebenengleichung ermit-
teln, bei C D 0
nächstes Dreieck. Scanlines abarbeiten: Dreieck links, mittig
1-Pixel-Column, und Dreieck rechts. (Es folgt ein Fragment zum Teildrei-
eck).
' 1.Teil, Dreieck links von der Mitte
dv12 = IIf(dh12 = 0, 0.0, (Ecke(1).y - Ecke(2).y) / dh12)
dv13 = IIf(dh13 = 0, 0.0, (Ecke(1).y - Ecke(3).y) / dh13)
'
' beginnt mit einer Ecke
kanfv = Ecke(1).y - 0.5 * dv12
kendv = Ecke(1).y - 0.5 * dv13
ColAnf = Ecke(1).h
ColEnd = Min(Ecke(2).h, Ecke(3).h)
For kordh = ColAnf To ColEnd - 1
kanfv += dv12
kendv += dv13
If kordh = ColAnf Then
LineAnf = Min(Ecke(1).y, kanfv)
LineEnd = Max(Ecke(1).y, kendv)
Else
LineAnf = kanfv
LineEnd = kendv
End If
Call ScanLine()
Next kordh
Bildspeicher füllen:
Private Sub ScanLine()
Dim Temp As Short
Dim Tief As Single
'
' Anfang und Ende der Scanline in den Arrays
Offset = (VertPic + 1) * kordh + LineAnf
Search WWH ::




Custom Search