要测试点需要计算点p在相机参考坐标系下的坐标值,pc已经详细说过了。我们同样假设点的pc.z在nearDist和farDist之间,因此需要测试其他坐标,叫做pc.y和pc.x。
假设一个2D的视景体如下图所示,水平箭头展示了pc.z的值,距相机的距离,pc.z视景体有一个高度h。
其中的a是视景体在垂直方向上的角度。
对于实现方式,pc在y方向上要在视景体之内需要:
-h/2 < pc.y < h/2
或者,在算法风格上:
if (-h/2 > pc.y || pc.y > h/2)
return(OUTSIDE)
视景体的宽度可以在高度的基础上计算:
w = h * ratio;
因此pc的x分量可以用下面的语句来计算:
if (-w/2 > pc.x || pc.x > w/2)
return(OUTSIDE)
下图中,提供的关于pc的信息看起来有点复杂,
这种方法对于前面提供的测试六个平面会快一点。在这里,对于每对平面只计算一个点乘,其中在前面的方法在最坏的情况下每个平面都需要一个点乘,请看下节具体的实现方式。