射线方法--点测试 2

要测试点需要计算点p在相机参考坐标系下的坐标值,pc已经详细说过了。我们同样假设点的pc.znearDistfarDist之间,因此需要测试其他坐标,叫做pc.ypc.x

假设一个2D的视景体如下图所示,水平箭头展示了pc.z的值,距相机的距离,pc.z视景体有一个高度h

射线方法--点测试 2_第1张图片

其中的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的信息看起来有点复杂,

射线方法--点测试 2_第2张图片

这种方法对于前面提供的测试六个平面会快一点。在这里,对于每对平面只计算一个点乘,其中在前面的方法在最坏的情况下每个平面都需要一个点乘,请看下节具体的实现方式。

英文地址

转载于个人博客:http://www.arcosu.com/post/index/108

你可能感兴趣的:(射线方法--点测试 2)