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.
77 lines
2.6 KiB
Markdown
77 lines
2.6 KiB
Markdown
# 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`](get-translation.md) | 获取平移分量 |
|
||
| [`GetRotation`](get-rotation.md) | 获取旋转分量 |
|
||
| [`GetScale`](get-scale.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 矩阵 |