推导透视正确修正#
设三角形三个点在三维空间中的齐次坐标为:
Ci′三角形内某点在三维空间中的坐标为:
P′=i∑βiCi′,∑βi=1其中β为三维空间中的重心坐标
然后经过投影矩阵M后:
P=MP′=Mi∑βiCi′=i∑βiMCi′=i∑βiCi其中P是该点在裁剪空间中的坐标,Ci是三角形顶点在裁剪空间中的坐标
取该点的x坐标为例,有:
XP=i∑βiXi,wP=i∑βiwi接下来做透视除法,x坐标为:
x=wPXP=∑iβiwi∑iβiXi整理上式,令S=∑iβiwi:
x=S∑iβiXi=i∑SβiwiwiXi=i∑∑jβjwjβiwiwiXi由于Xi/wi即为原先的三角形投影到屏幕后的屏幕x坐标,根据重心坐标的定义,有:
λi=∑jβjwjβiwi根据重心坐标的性质,有∑iβi=1,设S=∑jβjwj,经过一些数学计算:
λi=∑jβjwjβiwi⟹wiλi=Sβi⟹j∑wjλj=S∑jβj=S1⟹βi=Swiλi=∑jλj/wjλi/wi推导出三维空间的重心坐标值之后,我们就可以用来进行插值了!