找出投影平面内的三角形

finding out triangles inside the projection plane

假设以下三行表示投影变换后的 3D space 三角形的顶点(这些只是任意值,例如):

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坐标现在将在 [-1,1] 内。那么,我将如何确定完全在投影区域之外的三角形,如下图所示?它们是否具有每个顶点的所有 x、y 值 >1 或<-1 ?

没有。即使所有顶点都在可见区域之外,三角形仍然可见。例如,以下几点就是这种情况:

-2  -2  0.5
 2   2  0.5
 2  -2  0.5

尽管 x 和 y 分量都在 [-1, 1] 之外,三角形仍然覆盖了屏幕的一半。

实际上,没有简单的解决方案可以准确地确定哪些三角形在可见区域之外(或之内)。根据您的需要,有多种选择:

如果将某些三角形分类为可见的(尽管它们不可见)是可以接受的,您可以测试是否所有点都在可见区域的同一侧之外。例如,如果所有点的 x < -1 等等。

如果您确实需要完美的分类,Sutherland–Hodgman algorithm 可能是一个选择。当输出列表为空时,三角形完全不可见