refactor: reorganize docs into plan/ and add skills/
This commit is contained in:
137
docs/api/math/math-rect.md
Normal file
137
docs/api/math/math-rect.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# Rect / RectInt / Viewport
|
||||
|
||||
2D 矩形和视口结构体。
|
||||
|
||||
## 头文件
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Math/Rect.h>
|
||||
```
|
||||
|
||||
## 命名空间
|
||||
|
||||
`XCEngine::Math`
|
||||
|
||||
---
|
||||
|
||||
## Rect - 浮点矩形
|
||||
|
||||
```cpp
|
||||
struct Rect {
|
||||
float x = 0.0f; // 左边界
|
||||
float y = 0.0f; // 上边界
|
||||
float width = 0.0f;
|
||||
float height = 0.0f;
|
||||
};
|
||||
```
|
||||
|
||||
### 构造
|
||||
|
||||
- `Rect(float x, float y, float w, float h)`
|
||||
|
||||
### 边界访问
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `GetLeft()` | `float` | x |
|
||||
| `GetRight()` | `float` | x + width |
|
||||
| `GetTop()` | `float` | y |
|
||||
| `GetBottom()` | `float` | y + height |
|
||||
| `GetPosition()` | `Vector2` | (x, y) |
|
||||
| `GetSize()` | `Vector2` | (width, height) |
|
||||
| `GetCenter()` | `Vector2` | 中心点 |
|
||||
|
||||
### 检测方法
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `Contains(px, py)` | `bool` | 点是否在矩形内 |
|
||||
| `Contains(point)` | `bool` | Vector2 点检测 |
|
||||
| `Intersects(other)` | `bool` | 与另一矩形相交 |
|
||||
|
||||
### 静态方法
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `Intersect(a, b)` | `Rect` | 两矩形交集 |
|
||||
| `Union(a, b)` | `Rect` | 两矩形并集 |
|
||||
|
||||
### 设置方法
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `Set(x, y, w, h)` | `void` | 设置所有值 |
|
||||
| `SetPosition(x, y)` | `void` | 设置位置 |
|
||||
| `SetPosition(Vector2)` | `void` | 设置位置 |
|
||||
|
||||
---
|
||||
|
||||
## RectInt - 整数矩形
|
||||
|
||||
```cpp
|
||||
struct RectInt {
|
||||
int32_t x = 0;
|
||||
int32_t y = 0;
|
||||
int32_t width = 0;
|
||||
int32_t height = 0;
|
||||
};
|
||||
```
|
||||
|
||||
与 Rect 类似,但使用 int32_t 类型。
|
||||
|
||||
### 边界访问
|
||||
|
||||
`GetLeft/Right/Top/Bottom/GetPosition/GetSize/GetCenter` - 返回 int32_t 或 Vector2。
|
||||
|
||||
### 检测
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `Contains(px, py)` | `bool` | 整数点检测 |
|
||||
| `Intersects(other)` | `bool` | 相交检测 |
|
||||
|
||||
---
|
||||
|
||||
## Viewport - 视口
|
||||
|
||||
用于渲染视口和屏幕映射。
|
||||
|
||||
```cpp
|
||||
struct Viewport {
|
||||
float x = 0.0f;
|
||||
float y = 0.0f;
|
||||
float width = 0.0f;
|
||||
float height = 0.0f;
|
||||
float minDepth = 0.0f;
|
||||
float maxDepth = 1.0f;
|
||||
};
|
||||
```
|
||||
|
||||
### 构造
|
||||
|
||||
- `Viewport(float x, float y, float w, float h)`
|
||||
- `Viewport(float x, float y, float w, float h, float minD, float maxD)`
|
||||
|
||||
### 方法
|
||||
|
||||
| 方法 | 返回值 | 描述 |
|
||||
|------|--------|------|
|
||||
| `GetAspectRatio()` | `float` | 宽高比 (width/height) |
|
||||
| `GetRect()` | `Rect` | 转换为 Rect |
|
||||
|
||||
---
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
// Rect
|
||||
Rect screenRect(0.0f, 0.0f, 1920.0f, 1080.0f);
|
||||
if (screenRect.Contains(mouseX, mouseY)) { ... }
|
||||
|
||||
// 矩形相交
|
||||
Rect overlap = Rect::Intersect(rectA, rectB);
|
||||
|
||||
// Viewport
|
||||
Viewport viewport(0, 0, 1920, 1080);
|
||||
float aspect = viewport.GetAspectRatio(); // 16:9 = 1.78
|
||||
```
|
||||
Reference in New Issue
Block a user