70 lines
1.5 KiB
Markdown
70 lines
1.5 KiB
Markdown
|
|
# Matrix3 / Matrix3x3
|
|||
|
|
|
|||
|
|
3x3 矩阵结构体,用于表示 3D 旋转和缩放变换。
|
|||
|
|
|
|||
|
|
## 头文件
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
#include <XCEngine/Math/Matrix3.h>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 命名空间
|
|||
|
|
|
|||
|
|
`XCEngine::Math`
|
|||
|
|
|
|||
|
|
## 类型别名
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
using Matrix3 = Matrix3x3;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 存储方式
|
|||
|
|
|
|||
|
|
行优先存储 (row-major):
|
|||
|
|
```
|
|||
|
|
m[row][col]
|
|||
|
|
m[0][0] m[0][1] m[0][2]
|
|||
|
|
m[1][0] m[1][1] m[1][2]
|
|||
|
|
m[2][0] m[2][1] m[2][2]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 构造函数
|
|||
|
|
|
|||
|
|
- 默认构造函数初始化为零矩阵
|
|||
|
|
|
|||
|
|
## 静态工厂方法
|
|||
|
|
|
|||
|
|
| 方法 | 返回值 | 描述 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| `Identity()` | `Matrix3` | 单位矩阵 |
|
|||
|
|
| `Zero()` | `Matrix3` | 零矩阵 |
|
|||
|
|
| `RotationX(float radians)` | `Matrix3` | X 轴旋转矩阵 |
|
|||
|
|
| `RotationY(float radians)` | `Matrix3` | Y 轴旋转矩阵 |
|
|||
|
|
| `RotationZ(float radians)` | `Matrix3` | Z 轴旋转矩阵 |
|
|||
|
|
| `Scale(const Vector3& scale)` | `Matrix3` | 缩放矩阵 |
|
|||
|
|
|
|||
|
|
## 实例方法
|
|||
|
|
|
|||
|
|
| 方法 | 返回值 | 描述 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| `Transpose()` | `Matrix3` | 转置矩阵 |
|
|||
|
|
| `Inverse()` | `Matrix3` | 逆矩阵 |
|
|||
|
|
| `Determinant()` | `float` | 行列式 |
|
|||
|
|
|
|||
|
|
## 运算符
|
|||
|
|
|
|||
|
|
| 运算符 | 描述 |
|
|||
|
|
|--------|------|
|
|||
|
|
| `operator*(Matrix3, Matrix3)` | 矩阵乘法 |
|
|||
|
|
| `operator*(Matrix3, Vector3)` | 矩阵-向量乘法 |
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
Matrix3 rotX = Matrix3::RotationX(Math::HALF_PI);
|
|||
|
|
Matrix3 rotY = Matrix3::RotationY(0.0f);
|
|||
|
|
Matrix3 scale = Matrix3::Scale(Vector3(2.0f, 2.0f, 2.0f));
|
|||
|
|
Matrix3 combined = rotX * scale;
|
|||
|
|
Vector3 transformed = combined * Vector3(1.0f, 0.0f, 0.0f);
|
|||
|
|
```
|