Files
XCEngine/docs/api/math/transform/transform.md
2026-03-20 02:35:15 +08:00

2.3 KiB
Raw Blame History

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 逆变换一个方向

使用示例

#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();
}

相关文档