docs: update math API docs

This commit is contained in:
2026-03-20 02:35:15 +08:00
parent e165dbea1c
commit c5b17239ca
243 changed files with 5307 additions and 1327 deletions

View File

@@ -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)

View File

@@ -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 轴
```

View File

@@ -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 总览

View File

@@ -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 总览

View File

@@ -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 总览

View File

@@ -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 总览

View File

@@ -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 总览

View File

@@ -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 总览

View File

@@ -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 概览

View File

@@ -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 概览