1.5 KiB
1.5 KiB
Transform
3D 变换结构体,包含位置、旋转和缩放,用于层次化变换。
头文件
#include <XCEngine/Math/Transform.h>
命名空间
XCEngine::Math
Space 枚举
enum class Space { Self, World };
结构体定义
struct Transform {
Vector3 position = Vector3::Zero();
Quaternion rotation = Quaternion::Identity();
Vector3 scale = Vector3::One();
};
实例方法
| 方法 | 返回值 | 描述 |
|---|---|---|
ToMatrix() |
Matrix4 |
转换为 4x4 变换矩阵 |
Inverse() |
Transform |
逆变换 |
operator*(Transform, Transform) |
Transform |
组合变换 |
空间变换
| 方法 | 返回值 | 描述 |
|---|---|---|
TransformPoint(point) |
Vector3 |
变换点(带平移) |
TransformDirection(direction) |
Vector3 |
变换方向(不带平移) |
InverseTransformPoint(point) |
Vector3 |
逆变换点 |
InverseTransformDirection(direction) |
Vector3 |
逆变换方向 |
使用示例
Transform world;
world.position = Vector3(10.0f, 0.0f, 0.0f);
world.rotation = Quaternion::Identity();
world.scale = Vector3::One();
Matrix4 matrix = world.ToMatrix();
// 组合父子变换
Transform parent, child;
parent.position = Vector3(5.0f, 0.0f, 0.0f);
child.position = Vector3(2.0f, 0.0f, 0.0f);
Transform worldTransform = parent * child;
// 变换点
Vector3 localPos(1.0f, 0.0f, 0.0f);
Vector3 worldPos = world.TransformPoint(localPos);