2.5 KiB
2.5 KiB
Transform
命名空间: XCEngine::Math
类型: struct
头文件: XCEngine/Math/Transform.h
描述: 变换组件,包含位置、旋转和缩放,用于层级变换计算
概述
Transform 是 XCEngine 中的核心变换组件,封装了 3D 空间中的位置(position)、旋转(rotation)和缩放(scale)信息。它支持层级变换计算,可以将点或方向从本地空间变换到世界空间,或进行逆变换。
该结构体设计用于游戏引擎的层级关系系统中,每个 Transform 可以通过 operator* 与父级 Transform 组合,实现累积变换。
结构体成员
| 成员 | 类型 | 描述 | 默认值 |
|---|---|---|---|
position |
Vector3 |
位置 | Vector3::Zero() |
rotation |
Quaternion |
旋转(四元数) | Quaternion::Identity() |
scale |
Vector3 |
缩放 | Vector3::One() |
公共方法
| 方法 | 描述 |
|---|---|
ToMatrix |
将变换转换为 4x4 矩阵 |
Inverse |
返回变换的逆变换 |
operator* |
组合两个变换 |
TransformPoint |
变换一个点(考虑位置、旋转和缩放) |
TransformDirection |
变换一个方向(仅考虑旋转和缩放) |
InverseTransformPoint |
逆变换一个点 |
InverseTransformDirection |
逆变换一个方向 |
枚举
| 枚举 | 描述 |
|---|---|
Space |
变换参考空间(Self 或 World) |
使用示例
#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);
Transform combined = parent * child;
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();
}
相关文档
- Matrix4 - 4x4 矩阵