在.Net Framework 4.6.2(及更低版本)中,名称空间中存在该Matrix4x4结构System.Numerics。该结构具有Translation明显用于存储翻译部分的属性。但是,使用此属性时,它将值存储在最后一行
例:
var test = Matrix4x4.CreateTranslation(new Vector3(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)
产生以下矩阵:
1,0,0,0
0、1、0、0
0、0、1、0
1 2 3 1
但这应该是
1,0,0,1
0、1、0、2
0、0、1、3
0,0,0,1
在我看来。
这是一个错误还是我完全错了?
因为System.Numerics定义行向量,所以转换矩阵是“转置的” :
对于矩阵变换,将Vector2,Vector3和Vector4实例表示为行:向量v由具有vM乘法的矩阵M变换。
(来源)
数学如下:
/ 1 0 0 0 \
[a b c 1] * | 0 1 0 0 | = [a+A b+B c+C 1]
| 0 0 1 0 |
\ A B C 1 /
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |