几何检测 (四)

几何检测 (四)

两个AABB的相交性检测

      检测两个静止AABB的相交性是很简单的,只需要在每一维上单独检查它们的重合程度即可。如果在所有维上都没有重合,那么这两个AABB就不会相交。intersectAABBs()就是用这项技术来实现的。

01//---------------------------------------------------------------------------
02// Check if two AABBs intersect, and return true if so.  Optionally return
03// the AABB of their intersection if an intersection is detected.
04//---------------------------------------------------------------------------
05bool intersectAABBs(const AABB3& box1, const AABB3& box2, AABB3* boxIntersect)
06{
07    // Check for no overlap
08    if (box1.min.x > box2.max.x) return false;
09    if (box1.max.x < box2.min.x) return false;
10    if (box1.min.y > box2.max.y) return false;
11    if (box1.max.y < box2.min.y) return false;
12    if (box1.min.z > box2.max.z) return false;
13    if (box1.max.z < box2.min.z) return false;
14  
15    // We have overlap.  Compute AABB of intersection, if they want it.
16    if (boxIntersect != NULL)
17    {
18        boxIntersect->min.x = max(box1.min.x, box2.min.x);
19        boxIntersect->max.x = min(box1.max.x, box2.max.x);
20        boxIntersect->min.y = max(box1.min.y, box2.min.y);
21        boxIntersect->max.y = min(box1.max.y, box2.max.y);
22        boxIntersect->min.z = max(box1.min.z, box2.min.z);
23        boxIntersect->max.z = min(box1.max.z, box2.max.z);
24    }
25  
26    return true;
27

posted on 2011-02-19 13:13 jiahuafu 阅读(...) 评论(...) 编辑 收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银狐游戏开发资源2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值