Bei der Berechnung einzelner Scanlines wird die Höhe (der y Wert) mit der sogenanten Ceiling Funktion auf Integer Werte umgerechnet.
Mit der Ceiling Funktion verfolgt man den Ansatz der Top-Left Regel (der
linke und obere Rand gehört zum Polygon).
Die Ceiling Funktion liefert bei negativen Float Werten den gekasteten
Integer Wert( z.B.für -2.6 -2) und bei positiven wird Eins dazu addiert,
außer wenn die Werte gleich sind.
Da die x -Werte (Xstart,Xend) am Anfang den Wert Ax haben und der entsprechende y-Wert Ay nicht mehr mit dem neuem y-Wert aus der Ceiling Funktion
übereinstimmt, muß man den Xstart und Zstart neu berechnen. Die korrekten x-Werte erhält man dann
Xstart = Ax + ystep*deltaxAB, Xend = Ax + ystep*deltaxAC , wobei
ystep = ceil(Ay) - Ay .
Die x-Werte für die nächsten Scanlines erhält man dann Xstart = Xstart + deltaxAB, Xend = Xend + deltaxAC .
Endsprechend berechnet man die z und die w-Werte.
Die Interpolationswerte entlang jeder Scanline erhält man dann nach dem
gleichen Prinzip:
xstep = ceil(Xstart) - Xstart , Zstart = Zstart + xstep*deltazX, deltazX = (Zstart - Zend)/deltaX, deltaX = 1/(Xstart - Xend)
wobei Xstart != Xend .
Die Pixel werden danach mit dem
Z-Buffer Algorithmus gesetzt.
Der Code ist nicht Korrekt , liefert nicht immer die richtigen (u,v) Werte.
../bericht/code/TextureMapper.java