docs: update math API docs
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
# AABB / OBB
|
||||
|
||||
轴对齐包围盒 (AABB) 和有向包围盒 (OBB)。
|
||||
**命名空间**: `XCEngine::Math`
|
||||
|
||||
**头文件:** `#include <XCEngine/Math/AABB.h>`
|
||||
**类型**: `struct`
|
||||
|
||||
**命名空间:** `XCEngine::Math`
|
||||
**头文件**: `XCEngine/Math/AABB.h`
|
||||
|
||||
**描述**: 轴对齐包围盒 (AABB) 和有向包围盒 (OBB)
|
||||
|
||||
## 概述
|
||||
|
||||
`AABB` 在 Math 库中通过 `Bounds` 类型实现。OBB 是可以任意方向旋转的包围盒。
|
||||
|
||||
## AABB
|
||||
|
||||
@@ -14,30 +20,28 @@
|
||||
|
||||
OBB 是可以任意方向旋转的包围盒。
|
||||
|
||||
```cpp
|
||||
struct OBB {
|
||||
Vector3 center;
|
||||
Vector3 extents;
|
||||
Matrix4 transform;
|
||||
};
|
||||
```
|
||||
## 结构体成员
|
||||
|
||||
### 构造函数
|
||||
| 成员 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| `center` | `Vector3` | OBB 中心点 |
|
||||
| `extents` | `Vector3` | 从中心到每个面的距离 |
|
||||
| `transform` | `Matrix4` | 变换矩阵 |
|
||||
|
||||
- `OBB()` - 默认构造
|
||||
- `OBB(const Vector3& center, const Vector3& extents)` - 从中心和半长构造
|
||||
## 公共方法
|
||||
|
||||
### 实例方法
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| [GetAxis(index)](getaxis.md) | `Vector3` | 获取局部轴(index 必须是 0、1 或 2) |
|
||||
| [GetMin()](../box/getmin.md) | `Vector3` | 局部空间最小点 |
|
||||
| [GetMax()](../box/getmax.md) | `Vector3` | 局部空间最大点 |
|
||||
| [Contains(point)](../box/contains.md) | `bool` | 点是否在 OBB 内 |
|
||||
| [Intersects(OBB)](intersects-obb.md) | `bool` | 与另一个 OBB 相交 |
|
||||
| [Intersects(Sphere)](intersects-sphere.md) | `bool` | 与球体相交 |
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `OBB()` | 默认构造 |
|
||||
| `OBB(const Vector3& center, const Vector3& extents)` | 从中心和半长构造 |
|
||||
| [GetAxis](obb-getaxis.md) | 获取局部轴 |
|
||||
| [GetMin](obb-getmin.md) | 局部空间最小点 |
|
||||
| [GetMax](obb-getmax.md) | 局部空间最大点 |
|
||||
| [Contains](obb-contains.md) | 点是否在 OBB 内 |
|
||||
| [Intersects(OBB)](intersects-obb.md) | 与另一个 OBB 相交 |
|
||||
| [Intersects(Sphere)](intersects-sphere.md) | 与球体相交 |
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Math 模块总览](../math.md) - 返回 Math 模块总览
|
||||
- [Bounds](bounds/bounds.md) - 轴对齐包围盒
|
||||
- [Math 模块总览](../math.md)
|
||||
@@ -1,23 +0,0 @@
|
||||
# OBB::GetAxis
|
||||
|
||||
```cpp
|
||||
Vector3 GetAxis(int index) const
|
||||
```
|
||||
|
||||
获取 OBB 的局部坐标轴。
|
||||
|
||||
**参数:**
|
||||
- `index` - 轴索引(0=X轴, 1=Y轴, 2=Z轴)
|
||||
|
||||
**返回:** `Vector3` - 对应轴的方向向量
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
OBB obb = ...;
|
||||
Vector3 xAxis = obb.GetAxis(0); // 局部 X 轴
|
||||
Vector3 yAxis = obb.GetAxis(1); // 局部 Y 轴
|
||||
Vector3 zAxis = obb.GetAxis(2); // 局部 Z 轴
|
||||
```
|
||||
@@ -11,6 +11,8 @@ bool Intersects(const OBB& other) const
|
||||
|
||||
**返回:** `bool` - true 表示相交
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -22,3 +24,7 @@ if (obbA.Intersects(obbB)) {
|
||||
// 两个有向包围盒相交
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -11,6 +11,8 @@ bool Intersects(const Sphere& sphere) const
|
||||
|
||||
**返回:** `bool` - true 表示相交
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -22,3 +24,7 @@ if (obb.Intersects(sphere)) {
|
||||
// OBB 与球体相交
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -11,6 +11,8 @@ bool Contains(const Vector3& point) const
|
||||
|
||||
**返回:** `bool` - true 表示点在 OBB 内
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -18,3 +20,7 @@ bool Contains(const Vector3& point) const
|
||||
```cpp
|
||||
if (obb.Contains(point)) { /* inside */ }
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -11,6 +11,8 @@ Vector3 GetAxis(int index) const
|
||||
|
||||
**返回:** `Vector3` - 对应的局部轴
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -18,3 +20,7 @@ Vector3 GetAxis(int index) const
|
||||
```cpp
|
||||
Vector3 xAxis = obb.GetAxis(0);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -8,6 +8,8 @@ Vector3 GetMax() const
|
||||
|
||||
**返回:** `Vector3` - center + extents
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -15,3 +17,7 @@ Vector3 GetMax() const
|
||||
```cpp
|
||||
Vector3 max = obb.GetMax();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -8,6 +8,8 @@ Vector3 GetMin() const
|
||||
|
||||
**返回:** `Vector3` - center - extents
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
@@ -15,3 +17,7 @@ Vector3 GetMin() const
|
||||
```cpp
|
||||
Vector3 min = obb.GetMin();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB/OBB 总览
|
||||
@@ -1,25 +0,0 @@
|
||||
# OBB::Intersects(OBB)
|
||||
|
||||
```cpp
|
||||
bool Intersects(const OBB& other) const;
|
||||
```
|
||||
|
||||
判断两个 OBB 是否相交(SAT 分离轴定理)。
|
||||
|
||||
**返回:** 两包围盒是否相交
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
OBB a(centerA, extentsA);
|
||||
OBB b(centerB, extentsB);
|
||||
if (a.Intersects(b)) {
|
||||
// 两包围盒相交
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB 概览
|
||||
@@ -1,28 +0,0 @@
|
||||
# OBB::Intersects(Sphere)
|
||||
|
||||
```cpp
|
||||
bool Intersects(const Sphere& sphere) const;
|
||||
```
|
||||
|
||||
判断 OBB 与球体是否相交。
|
||||
|
||||
**参数:**
|
||||
- `sphere` - 球体
|
||||
|
||||
**返回:** OBB 与球体是否相交
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
OBB obb(center, extents);
|
||||
Sphere s(sphereCenter, radius);
|
||||
if (obb.Intersects(s)) {
|
||||
// OBB 与球体相交
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [AABB 总览](aabb.md) - 返回 AABB 概览
|
||||
Reference in New Issue
Block a user