射线方法--点测试 2

要测试点需要计算点p在相机参考坐标系下的坐标值,pc已经详细说过了。我们同样假设点的pc.znearDistfarDist之间,因此需要测试其他坐标,叫做pc.ypc.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的信息看起来有点复杂,

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

英文地址

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值