Files
XCEngine/docs/api/math/transform/transform.md

78 lines
2.5 KiB
Markdown
Raw Normal View History

# Transform
2026-03-20 02:35:15 +08:00
**命名空间**: `XCEngine::Math`
2026-03-20 02:35:15 +08:00
**类型**: `struct`
2026-03-20 02:35:15 +08:00
**头文件**: `XCEngine/Math/Transform.h`
2026-03-20 02:35:15 +08:00
**描述**: 变换组件,包含位置、旋转和缩放,用于层级变换计算
2026-03-20 02:35:15 +08:00
## 概述
`Transform` 是 XCEngine 中的核心变换组件,封装了 3D 空间中的位置position、旋转rotation和缩放scale信息。它支持层级变换计算可以将点或方向从本地空间变换到世界空间或进行逆变换。
该结构体设计用于游戏引擎的层级关系系统中,每个 `Transform` 可以通过 `operator*` 与父级 `Transform` 组合,实现累积变换。
## 结构体成员
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `position` | `Vector3` | 位置 | `Vector3::Zero()` |
| `rotation` | `Quaternion` | 旋转(四元数) | `Quaternion::Identity()` |
| `scale` | `Vector3` | 缩放 | `Vector3::One()` |
## 公共方法
| 方法 | 描述 |
|------|------|
| [`ToMatrix`](to-matrix.md) | 将变换转换为 4x4 矩阵 |
| [`Inverse`](inverse.md) | 返回变换的逆变换 |
| [`operator*`](operator-star.md) | 组合两个变换 |
| [`TransformPoint`](transform-point.md) | 变换一个点(考虑位置、旋转和缩放) |
| [`TransformDirection`](transform-direction.md) | 变换一个方向(仅考虑旋转和缩放) |
| [`InverseTransformPoint`](inverse-transform-point.md) | 逆变换一个点 |
| [`InverseTransformDirection`](inverse-transform-direction.md) | 逆变换一个方向 |
## 枚举
| 枚举 | 描述 |
|------|------|
| [`Space`](space.md) | 变换参考空间Self 或 World |
2026-03-20 02:35:15 +08:00
## 使用示例
```cpp
2026-03-20 02:35:15 +08:00
#include "XCEngine/Math/Transform.h"
#include "XCEngine/Math/Vector3.h"
#include "XCEngine/Math/Quaternion.h"
using namespace XCEngine::Math;
void TransformExample() {
Transform parent;
parent.position = Vector3(10.0f, 0.0f, 0.0f);
parent.rotation = Quaternion::Identity();
parent.scale = Vector3(2.0f, 2.0f, 2.0f);
Transform child;
child.position = Vector3(5.0f, 0.0f, 0.0f);
child.rotation = Quaternion::Identity();
child.scale = Vector3(1.0f, 1.0f, 1.0f);
2026-03-20 02:35:15 +08:00
Transform combined = parent * child;
2026-03-20 02:35:15 +08:00
Vector3 localPoint(1.0f, 0.0f, 0.0f);
Vector3 worldPoint = combined.TransformPoint(localPoint);
Vector3 worldDir(0.0f, 1.0f, 0.0f);
Vector3 transformedDir = combined.TransformDirection(worldDir);
Matrix4 mat = combined.ToMatrix();
}
```
## 相关文档
2026-03-20 02:35:15 +08:00
- [Matrix4](../matrix4/matrix4.md) - 4x4 矩阵