用c++ 写一个aabb包围盒算法
时间: 2024-03-27 22:35:24 浏览: 207
OBB包围盒生成算法
4星 · 用户满意度95%
下面是一个简单的 AABB 包围盒算法的 C++ 代码示例:
```c++
struct AABB {
glm::vec3 min;
glm::vec3 max;
};
AABB calculateAABB(const std::vector<glm::vec3>& points) {
AABB aabb;
aabb.min = aabb.max = points[0];
for (const auto& point : points) {
if (point.x < aabb.min.x) aabb.min.x = point.x;
if (point.y < aabb.min.y) aabb.min.y = point.y;
if (point.z < aabb.min.z) aabb.min.z = point.z;
if (point.x > aabb.max.x) aabb.max.x = point.x;
if (point.y > aabb.max.y) aabb.max.y = point.y;
if (point.z > aabb.max.z) aabb.max.z = point.z;
}
return aabb;
}
```
该函数接受一个包含三维点的向量的容器作为输入,计算并返回对应的 AABB 包围盒。算法的核心思想是遍历所有输入点,并对每个维度上的最小值和最大值进行更新。最终返回的结构体包含了计算出的最小值和最大值,即 AABB 包围盒。
这里使用了 GLM 库来处理向量运算。如果您没有使用 GLM,可以使用自己的向量类或其他数学库来代替。
阅读全文