|
|
|
интерполяция нормалей к точкам |
|
|
|
|
17.10.2009 19:17 |
интерполяция нормалей к точкам Nq.x =w* N2.x +(1-w)* N1.x; Nq.y =w* N2.y +(1-w)* N1.y; Nq.z =w* N2.z +(1-w)* N1.z; Nr.x=t*N3.x+(1-t)*N1.x; Nr.y=t*N3.y+(1-t)*N1.y; Nr.z=t*N3.z+(1-t)*N1.z; //Определение интенсивности в точках интерполяции Colq= Color (Nq, nab, ist, col_pov); Colr= Color (Nr, nab, ist, col_pov); z_buff(x3,x2,y3,y2,yq,xq,Colq); z_buff(x3,x1,y3,y1,yq,xr,Colr); dp=abs(xq-xr); if(xq<xr) dp1=xq; else dp1=xr; for(int e=1;e<dp;e++){ dp1+=1; zp1=zq+ abs(xq-dp1)*(zq-zr)/abs(xq-xr); if(xq<xr){ u=Lenght(dp1,yq,xq,yq)/ Lenght(dp1,yq,xr,yr); } else u=Lenght(dp1,yq,xq,yq)/ Lenght(dp1,yq,xr,yr); //интерполяция нормали Np.x=u*Nq.x+(1-u)*Nr.x; Np.y=u*Nq.y+(1-u)*Nr.y; Np.z=u*Nq.z+(1-u)*Nr.z; //определение интенсивности точки Colp= Color (Np, nab, ist, col_pov); z_buff(dp1,yq,zp1,Colp); } } Где p[1], p[2] , p[3] – вершины полигона, x1, x2, x3, y1, y2, y3, z1, z2, z3 – соответственно их координаты, Col1, Col2, Col3 – их интенсивность.
|
|
|