几何检测 (四)

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

两个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 //---------------------------------------------------------------------------
05 bool 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
目录
打赏
0
0
0
0
13
分享
相关文章
大佬说 | 概率和几何深度:在三维空间中检测物体
经过简单的可视化分析,我们发现在数据量很小的时候,越简单的方法越容易出现难以学习的问题(数据真实地喂不饱这摆烂的模型 :) ),于是我们首先加上了一个最基本的局部几何约束:即利用额外的 2D 检测框来给 3D 检测框增加一个自监督的约束。
297 0
大佬说 | 概率和几何深度:在三维空间中检测物体
3D Hough变换点云平面检测算法
3D Hough变换点云平面检测算法
310 0
通过光流法检测运动物体,得到图像运动场
通过光流法检测运动物体,得到图像运动场
428 0
通过光流法检测运动物体,得到图像运动场
【opencv3】透视变换后帧差法检测运动物体C++
【opencv3】透视变换后帧差法检测运动物体C++
|
10月前
三维手部关键点
三维手部关键点
使用激光雷达检测地平面和障碍物
通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。
219 0