Dunia Nyata
Pada dunia nyata, kita bisa melihat suatu benda karena mata kita menerima cahaya dari sumber cahaya yang dipantulkan oleh permukaan benda.
sumber cahaya viewer (mata atau kamera)
benda
benda
Cahaya yang tergambar dengan warna jingga adalah cahaya yang harus dihitung dengan sia-sia
benda
Dengan demikian dijamin hanya cahaya yang sampai ke mata yang kita hitung !
nearest.pos := 9999999999999; For obj := first_object to last_object intersect := ComputeIntersection(ray,obj); if intersect.pos<nearest.pos then nearest := intersection;
if nearest.pos < 9999999999999 then SetPixel(x,y,ComputeColor(nearest)) else SetPixel(x,y,background_color);
Sebagai Contoh
(-2,2)
(0,0)
viewer (-1,0,0)
Bola dengan pusat (3,0,0), Jari-jari = 2 (2,-2)
Dimodelkan
(0,0)
viewer (-1,0,0)
Pers.parametrik sinar : x=-1(1-t)=t-1 y=0 z=0
(x-3)2+y2+z2=4
Dihitung
atau
(5,0,0) dan (1,0,0)
Lalu bagaimana ?
Setelah diketahui bahwa sinar memotong bola di :
t = 2, atau (1,0,0) t = 6, atau (5,0,0)
sesuai dengan algoritma, maka dipilih perpotongan yang paling dekat dengan viewer, yaitu : t = 2, atau (1,0,0) Lalu hitunglah warna pada posisi perpotongan tersebut, dan plotlah pixel pada posisi (0,0) dengan warna itu. Bagaimana menghitung warna pada perpotongan ???