2016-11-16 64 views
0

让我们假设以下三行表示在投影变换后的三维空间中的三角形的顶点(这些只是例如只是任意值)内:找出三角形投影面

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 <?

回答

0

不会。即使所有顶点都在可见区域之外,三角形仍然可见。这将,例如,是这个点的情况下:

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

虽然两者中,x和y分量是不在[-1,1]的三角形仍然覆盖屏幕的一半。

实际上,没有简单的解决方案,以准确地确定哪些三角形是外部(或内部)的可见区域。根据您的需求有几个选项:

如果可以接受一些三角形为可见的分类虽然他们都没有,你可以测试所有点是否可见区域的同一侧外。例如,如果所有点都有x < -1等等。

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

+0

我做了一个小编辑@BDL – user5411115

+0

答案保持不变。 z坐标实际上在这里没有区别。唯一可以容易说出的是,当两个点中的一个点在[-1,1]内时,三角形肯定可见。但对于其他事情来说,没有小事。 – BDL

+0

关于形象:在这种情况下,我的答案的第一种方法将工作。但是,例如,[0,3],[3,3],[3,0]将被错误地分类为可见,但它不是。 – BDL