#3235 Score: 0
sublimation
Participant
3 pts

我也是一开始少了绝对值,改为负以后还是朝下,但是我是如Angus同学所说,差在了正交投影的x,y。如果是正交投影的Z方向,应该不会造成x,y关于原点中心对称,他会使得原三角形关于xOy对称。
所以我推测这也就解释了,为什么一开始你只是修改了”透视->正交变换矩阵 M’ 的最后一行就成为了 (0, 0, -1, 0)”却很合理。
解释一下:
如果直接按照n,f为正计算,有几个地方有问题:
1.将视锥压到长方体的时候,三角形的顶点坐标是在视锥外的,而且是视锥相对在原点的对侧,做了同样的变换后,感觉像是关于原点的小孔成像一样的变换(比例不太一样)。所以,再经过正交投影后可以有图形,我觉得是一个巧合,恰好经过将视锥压到长方体的矩阵计算后,还落在了被压缩的视锥体得到的长方体内,这样才在最后的结果有了成像(假如点在视锥外,z的改变,可能会造成变换后不在这个长方体内,可能就看不到了。而且如果这个z是接近于0,那么三角形会非常大,如果趋近于无穷,又会非常小)
2.如果n,f是正的,那么f->1;n->-1,如果n,f是负的,那么n->1;f->-1。(这个我是自己推断,不知道是否真的是这样)

所以,修改了”透视->正交变换矩阵 M’ 的最后一行就成为了 (0, 0, -1, 0)”。关于1,可以看做恰好,是等价于了压缩[-f,-n]部分的视锥。然后关于2,n,f是正的,你的正交投影矩阵并没有变化,所以导致依旧是f->1;n->-1,这里再次翻转。最后恰好使得结果正确。

最后,感谢一下这个错误,可以获得和各位优秀的同学讨论的机会。以及,对透视投影的理解更加深刻。