Files
XCEngine/docs/api/math/matrix4/matrix4.md
ssdfasd 0f0ab8922a docs: fix naming conventions across threading, math, memory, core, and debug modules
threading/:
- Rename 19 camelCase method files to hyphenated names
- task-system: createtaskgroup→create-task-group, etc.
- tasksystemconfig: enabletaskprofiling→enable-task-profiling, etc.
- thread: getcurrentid→get-current-id, etc.
- task: addref→add-ref, getid→get-id, etc.

math/:
- Rename underscore operator files to hyphenated
- vector3: operator_add→operator-add, etc.
- matrix4: gettranslation→get-translation, etc.
- vector4: tovector3→to-vector3, constructor_vector3→constructor-vector3
- sphere: sphere_constructor→sphere-constructor, etc.

memory/:
- Remove duplicate memorymanager/ folder (kept manager/ which was correct)

core/:
- filewriter: Consolidate ctor-default.md and ctor-file.md into constructor.md
- Rename dtor.md→destructor.md

debug/:
- filelogsink: Rename construct.md→constructor.md, ~filelogsink.md→destructor.md

All overview pages updated with new file references.
2026-03-22 23:09:29 +08:00

2.6 KiB
Raw Blame History

Matrix4

命名空间: XCEngine::Math

类型: struct

头文件: XCEngine/Math/Matrix4.h

描述: 4x4 矩阵,用于 3D 变换(平移、旋转、缩放)、视图和投影计算

概述

Matrix4 (别名 Matrix4x4) 是 XCEngine 中用于表示 4x4 变换矩阵的结构体。它支持标准的 3D 图形变换操作,包括平移、旋转、缩放,以及视图矩阵和投影矩阵的构建。该结构体采用列主序存储方式,适用于 GPU 渲染和物理计算场景。

结构体成员

成员 类型 描述
m[4][4] float 矩阵元素数组

公共方法

方法 描述
Identity 返回单位矩阵
Zero 返回零矩阵
Translation 创建平移矩阵
Rotation 从四元数创建旋转矩阵
Scale 创建缩放矩阵
TRS 创建组合变换矩阵
LookAt 创建视图矩阵
Perspective 创建透视投影矩阵
Orthographic 创建正交投影矩阵
RotationX 创建绕 X 轴旋转矩阵
RotationY 创建绕 Y 轴旋转矩阵
RotationZ 创建绕 Z 轴旋转矩阵
operator* 矩阵乘法
MultiplyPoint 变换点w=1
MultiplyVector 变换向量w=0
Transpose 转置矩阵
Inverse 求逆矩阵
Determinant 计算行列式
GetTranslation 获取平移分量
GetRotation 获取旋转分量
GetScale 获取缩放分量
Decompose 分解矩阵为变换分量
operator[] 访问矩阵行数据

使用示例

#include "XCEngine/Math/Matrix4.h"
#include "XCEngine/Math/Vector3.h"
#include "XCEngine/Math/Quaternion.h"

using namespace XCEngine::Math;

void MatrixExample() {
    Matrix4 mat = Matrix4::TRS(
        Vector3(1.0f, 2.0f, 3.0f),
        Quaternion::FromEulerAngles(0.0f, 90.0f, 0.0f),
        Vector3(1.5f, 1.5f, 1.5f)
    );

    Vector3 point(1.0f, 0.0f, 0.0f);
    Vector3 transformed = mat.MultiplyPoint(point);

    Matrix4 inv = mat.Inverse();
    Matrix4 result = mat * inv;
}

相关文档