Ray Box求交点

本文介绍了Ray与Box相交的求解方法,通过将Ray转换到Box的坐标系中,计算Ray在Box各个轴上的投影,判断Ray与Box六个面的交点,从而确定相交情况。涉及到Ray的参数方程、Box的轴向变换以及交点的计算公式。
摘要由CSDN通过智能技术生成

Ray与Box的定义:

class Ray
{
    // data member
    Vector3f Origin;
    Vector3f Direction;
}

class Box
{
    // data member
    Vector3f Center;

    float Extents[3];
    Vector3f Axis[3];
}

Box可以看成由三组平面所构成的平行平面空间(slab)的交集
Ray与Box相交等同于Ray与三个slab都存在交集

Ray使用参数方程表示:
P(t)=O+tdir
Slab表示为:
Pni=d

t=dOninidir

为了计算方便,将OBB转换为AABB,将Ray投影到AABB的三个轴上,从而将Ray转换到以Box的Center为原点,三个Axis为坐标轴的空间里

设置以下记号:
Ray.Directiondir
Ray.OriginO
Box.Axis[i]Axis[i]
Box.Extent[i]ei
Box.CenterC
delta=OC

变换后:
dirdir =(dirAxis[X],dirAxis[Y],dirAxis[Z])
OO =(deltaAxis[X],deltaAxis[Y]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值