Menu główne:
Cieniowanie płaskie to najprostszy model cieniownia. Dany trójkąt pokolorowany jest tylko jednym kolorem. Objekt cieniowany płasko, ma wyrażnie widoczną strukturę poligonu. (trójkąta).
Algorytm cieniowania płaskiego:
UWAGA: Algorytm wykorzystuje wyłącznie zmienne typu całkowitego.
1. Posortuj wierzchołki trójkąta względem ich współrzędnych Y (od najmniejszej do największej).
2. Oblicz przyrosty między wierzchołkami trójąta na podstawie wzorów.
a) dx12=(x2-x1)/(y2-y1) b)dx13=(x3-x1)/(y3-y1) c)dx23=(x3-x2)/(y3-y2)
licząc przyrosty, licznik pomnóż przez 256 jeśli mianownik jest równy 0,to przyjmij przyrost dx = 0.
3. x11=x1; x12=x1, czyli xk1=256x1; xk2=256x1
4. y=y1
5. x11=xk1/256; x12=xk2/256
6. Sprzwdż, czy x11 =< x12
7. Narysuj poziomą linię od punktu (x11,y) do punktu (x12,y).
8. x11=x11 + dx13 czyli xk1=xk1 + dx13
9. x12=x12 + dx12, czyli xk2=xk2 + dx12
10. y=y+1
11. Jeżeli y , y2 to powtarzaj od kroku 5
12. x11=x11 (bez zmian); x12=x2, czyli xk1 bez zmian tak jak po wyjściu z pętli; xk3 = 256 * x2
13. y = y2
14. x11 = xk1/256; x12 = xk3/256;
15. Sprawdż, czy x11 =< x12; jeśli nie, to zamień kolejność punktów (x11,y) i (x12,y).
16. Narysuj poziomą linię od punktu (x11,y) do punktu (x12,y).
17. x11 = x11+dx13; czyli xk1 = xk1 + dx13.
18. x12 = x12 + dx23; czyli xk3 = xk3 + dx23.
19.Jeżeli y < y3 to powtarzaj od kroku 14.
UWAGA: Kroki 4-11 i 13-20 należy zrealizować jako pętle. Mnożenie i dzielenie przez 256 należy zrealizowac jako przesunięcia bitowe.
Obiekt cieniowany płasko |
Obiekt cieniowany płasko |