关于透视校正
使用如下的矩阵进行透视投影:
p
r
o
j
=
[
n
0
0
0
0
n
0
0
0
0
n
+
f
n
f
0
0
−
1
0
]
\mathrm{proj}=\begin{bmatrix} n&0&0&0\\0&n&0&0\\0&0&n+f&nf\\0&0&-1&0 \end{bmatrix}
proj=⎣⎢⎢⎡n0000n0000n+f−100nf0⎦⎥⎥⎤
假设有两个点 P ( x 1 , y 1 , z 1 , w 1 ) , Q ( x 2 , y 2 , z 2 , w 2 ) P(x_1,y_1,z_1,w_1),Q(x_2,y_2,z_2,w_2) P(x1,y1,z1,w1),Q(x2,y2,z2,w2),进行变换后得到的点为 P ′ ( n x 1 , n y 2 , ( n + f ) z 1 + n f w 1 , − z 1 ) , Q ′ ( n x 2 , n y 2 , ( n + f ) z 2 + n f w 2 , − z 2 ) P'(nx_1,ny_2,(n+f)\,z_1+nfw_1,-z_1),Q'(nx_2,ny_2,(n+f)\,z_2+nfw_2,-z_2) P′(nx1,ny2,(n+f)z1+nfw1,−z1),Q′(nx2,ny2,(n+f)z2+nfw2,−z2).
对于变换卡后的 x , y x,y x,y 坐标,他们的之间的差呈现正比关系,但是对于 z z z 坐标,呈现出非正比的关系,即 z 2 / w 2 − z 1 / w 1 ∝̸ − ( n + f ) − n f w 2 / z 2 + ( n + f ) + n f w 1 / z 1 z_2/w_2-z_1/w_1\not\propto -(n+f)-nfw_2/z_2+(n+f)+nfw_1/z_1 z2/w2−z1/w1∝−(n+f)−nfw2/z2+(n+f)+nfw1/z1.
但是我们注意到对于变换后的
z
z
z 坐标,其差为
(
w
1
z
1
−
w
2
z
2
)
n
f
\left(\cfrac{w_1}{z_1}-\cfrac{w_2}{z_2}\right)\,nf
(z1w1−z2w2)nf
正比于变换之前的坐标倒数之差
w
1
z
1
−
w
2
z
2
\cfrac{w_1}{z_1}-\cfrac{w_2}{z_2}
z1w1−z2w2
这是一个重要的性质。