矩阵结构给出错误的输出

时间:2019-11-05 13:13:31

标签: c# matrix vector

在.Net Framework 4.6.2(及更低版本)中,Matrix4x4名称空间中存在System.Numerics结构。 该结构具有属性Translation,该属性显然用于存储翻译部分。 但是,使用此属性时,它将值存储在最后一行

示例:

var test = Matrix4x4.CreateTranslation(new Vector3(1, 2, 3));

产生以下矩阵:

  

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

我认为

这是一个错误还是我完全错了?

1 个答案:

答案 0 :(得分:5)

翻译矩阵是“转置的”,因为System.Numerics定义了向量:

  

对于矩阵变换,Vector2,Vector3和Vector4   实例表示为行:向量v由a转换   vM乘法的矩阵M。

source

数学如下:

            / 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 /