Files
XCEngine/docs/api/math/matrix4/matrix4.md
ssdfasd f5a34f8adc docs: 重构 API 文档 - components 和 scene 模块
- components: 修复英文标题为中文,添加缺失组件文档
  - 新增 camera-component, light-component, audio-source-component, audio-listener-component 类总览
  - 修复 get-position.md 格式
  - 更新 components.md 模块总览
- scene: 修复方法文档格式,新增缺失方法
  - 修复 find.md, create-game-object.md 英文标题
  - 新增 FindByID, SerializeToString, DeserializeFromString 方法文档
  - 更新 scene.md 类总览方法列表
2026-03-26 01:50:27 +08:00

77 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Matrix4
**命名空间**: `XCEngine::Math`
**类型**: `struct`
**头文件**: `XCEngine/Core/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/Core/Math/Matrix4.h"
#include "XCEngine/Core/Math/Vector3.h"
#include "XCEngine/Core/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 矩阵