【完全的个人理解,梳理给自己看的。如果有错希望有大佬可以说一下。后续看情况自己改正】
通过第二张图,当将平面挤压时,可得到x,y的对应位置(相似三角形),但是在(n,f)范围内的Z坐标(假设为w)在挤压过程中会变动,所以不能确定具体位置,由此可以得到在(n,f)范围内,压缩后的坐标为:
(同时乘以w,点的位置没有变化,不知道xn/w怎么得到的话再看看视频)
1.列出待求解方程
想要知道怎么从原坐标压缩为,就要求解M:(※这里同时乘以了w,最后的时候需要除回去。w是未知数,取值范围在(n,f)之间)
2.求解过程
1.通过这个需要求解的方程本身,可以得到M=(视频也是讲了为何可以得到,挺容易听懂)
2.通过特殊点来求解,一个是n平面上的点(所有值都不变,不会被压缩)。一个远平面f的中心点(0,0,f,1),同样不会变化。
2.(1)在n平面上,w=n。此时不是unknown,因为已知在n平面上点的位置不变,为,为了方便,同时乘n,所以此时unknown=。
推出:nA+B=
2.(2)同理,在f平面的中心点,w=f。
推出:fA+B=
3.方程答案
联立两个公式,解得:
同时再多代几个(n,f)之间的值,可以得到,x与y轴的w=n。
所以:
4.z压缩后的位置
在压缩前,中间位置为。压缩后的位置通过方程得到。
当时:
所以解出z的位置为 ,同时之前是为了方便计算额外乘以了,所以z的实际位置为:
5.对比位置
因为是面朝-z轴,所以 f<n<0.
所以z的实际位置数值更小,所以说更偏向f