1.9 KiB
1.9 KiB
Bounds
命名空间: XCEngine::Math
类型: struct
头文件: XCEngine/Math/Bounds.h
描述: 轴对齐包围盒,用于场景管理中的快速剔除
概述
Bounds 表示一个轴对齐包围盒(AABB),使用中心点 center 和范围 extents 定义。extents 是从中心到包围盒每个面的距离,因此实际尺寸为 extents * 2。常用于视锥剔除、碰撞检测和场景管理中的快速排除不可见物体。
结构体成员
| 成员 | 类型 | 描述 |
|---|---|---|
center |
Vector3 |
包围盒中心点 |
extents |
Vector3 |
从中心到每个面的距离(实际尺寸 = extents * 2) |
公共方法
| 方法 | 描述 |
|---|---|
Bounds |
构造函数 |
GetMin |
获取包围盒最小点 |
GetMax |
获取包围盒最大点 |
SetMinMax |
从最小/最大点设置包围盒 |
Intersects |
检测与另一个 Bounds 是否相交 |
Contains |
检测点是否在盒内 |
Encapsulate |
扩展包围盒以包含点或另一个 Bounds |
Expand |
扩展包围盒 |
GetClosestPoint |
获取盒上最接近给定点的点 |
GetVolume |
计算包围盒体积 |
使用示例
#include <XCEngine/Math/Bounds.h>
#include <XCEngine/Math/Vector3.h>
using namespace XCEngine::Math;
Bounds bounds(Vector3(0.0f, 0.0f, 0.0f), Vector3(2.0f, 2.0f, 2.0f));
Vector3 min = bounds.GetMin();
Vector3 max = bounds.GetMax();
bounds.Expand(1.0f);
if (bounds.Contains(Vector3(0.0f, 0.0f, 0.0f))) {
// point is inside
}
Bounds other(Vector3(5.0f, 0.0f, 0.0f), Vector3(1.0f, 1.0f, 1.0f));
if (bounds.Intersects(other)) {
// bounds intersect
}
相关文档
- Math 模块总览 - 返回 Math 模块总览