# Matrix4 **命名空间**: `XCEngine::Math` **类型**: `struct` **头文件**: `XCEngine/Math/Matrix4.h` **描述**: 4x4 矩阵,用于 3D 变换(平移、旋转、缩放)、视图和投影计算 ## 概述 `Matrix4` (别名 `Matrix4x4`) 是 XCEngine 中用于表示 4x4 变换矩阵的结构体。它支持标准的 3D 图形变换操作,包括平移、旋转、缩放,以及视图矩阵和投影矩阵的构建。该结构体采用列主序存储方式,适用于 GPU 渲染和物理计算场景。 ## 结构体成员 | 成员 | 类型 | 描述 | |------|------|------| | `m[4][4]` | `float` | 矩阵元素数组 | ## 公共方法 | 方法 | 描述 | |------|------| | [`Identity`](identity.md) | 返回单位矩阵 | | [`Zero`](zero.md) | 返回零矩阵 | | [`Translation`](translation.md) | 创建平移矩阵 | | [`Rotation`](rotation.md) | 从四元数创建旋转矩阵 | | [`Scale`](scale.md) | 创建缩放矩阵 | | [`TRS`](trs.md) | 创建组合变换矩阵 | | [`LookAt`](lookat.md) | 创建视图矩阵 | | [`Perspective`](perspective.md) | 创建透视投影矩阵 | | [`Orthographic`](orthographic.md) | 创建正交投影矩阵 | | [`RotationX`](rotationx.md) | 创建绕 X 轴旋转矩阵 | | [`RotationY`](rotationy.md) | 创建绕 Y 轴旋转矩阵 | | [`RotationZ`](rotationz.md) | 创建绕 Z 轴旋转矩阵 | | [`operator*`](operator_mul.md) | 矩阵乘法 | | [`MultiplyPoint`](multiplypoint.md) | 变换点(w=1) | | [`MultiplyVector`](multiplyvector.md) | 变换向量(w=0) | | [`Transpose`](transpose.md) | 转置矩阵 | | [`Inverse`](inverse.md) | 求逆矩阵 | | [`Determinant`](determinant.md) | 计算行列式 | | [`GetTranslation`](gettranslation.md) | 获取平移分量 | | [`GetRotation`](getrotation.md) | 获取旋转分量 | | [`GetScale`](getscale.md) | 获取缩放分量 | | [`Decompose`](decompose.md) | 分解矩阵为变换分量 | | [`operator[]`](operator_index.md) | 访问矩阵行数据 | ## 使用示例 ```cpp #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; } ``` ## 相关文档 - [Vector3](../vector3/vector3.md) - 三维向量 - [Quaternion](../quaternion/quaternion.md) - 四元数 - [Matrix3](../matrix3/matrix3.md) - 3x3 矩阵