让我们假设以下三条线代表投影变换后三维空间中三角形的顶点(例如,这些只是任意值):
0.0000000 0.0000000 0.9797980
0.1191754 0.0000000 0.9797980
0.0000000 0.1191754 0.9797980
如果投影平面是长度为2的正方形(左上角点(-1,1)和右下角点(1,-1)),并且我已经相对于z轴执行了剪切,则z co-纵坐标将在[-1,1]之内。那么,我如何确定完全位于投影区域之外的三角形,如下图所示?它们是否具有每个顶点的x,y值> 1或者< ; -1?
答案 0 :(得分:0)
没有。即使所有顶点都在可见区域之外,三角形仍然可见。例如,这将是这一点的情况:
-2 -2 0.5
2 2 0.5
2 -2 0.5
尽管两者都是,x和y分量都在[-1,1]之外,但三角形仍然覆盖了屏幕的一半。
实际上,没有简单的方法可以准确地确定哪些三角形位于可见区域的外部(或内部)。根据您的需要,有几种选择:
如果可以将某些三角形分类为可见,尽管它们不可见,您可以测试所有点是否在可见区域的同一侧之外。例如,如果所有点都具有x < -1等等。
如果您确实需要完美分类,Sutherland–Hodgman algorithm可能是一种选择。当输出列表为空时,三角形完全不可见。