我一直在阅读有关矩阵的信息(例如,旋转矩阵,但不仅限于此),可以将其视为坐标系。

我的问题是:那怎么可能?

例如,我已经看到,如果我们使用行主要约定,则转换中涉及的矩阵行(特别是我所见过的旋转)可以认为是表示一些坐标系(特别是应该是局部坐标系)。

为什么会这样?以及为什么要专门使用局部坐标系?在这种情况下,它甚至意味着局部坐标系是什么?除旋转矩阵外,还有其他类型的矩阵可以视为坐标系吗?如果是,是哪一个,为什么?

矩阵通常表示一个转换(是否为线性,或者在计算机图形学中也可以仿射),但是将矩阵视为坐标系对我来说是新的。

评论

无论是面向行还是面向列,或者是相反的情况,都没关系。这不是因为数学,而是我们正在尝试的。数学并没有解决您为什么这么想,数学处理抽象事物的属性,而解释却必须来自数学的另一面。但最好还是巧妙地问一下您最初尝试过的太空问题

请检查scratchapixel.com/lessons/…

@ user18490是的,在这种情况下,在阅读了scratchpixel的课程后出现了这个问题。我认为那里的解释不够理解。

#1 楼

如果您有一个表示某种变换的3x3矩阵,则实际上在行或列中将具有该变换的X,Y,Z向量(取决于它是行主矩阵还是列主矩阵)。

换句话说,如果您有一个3x3,则可以查看它并立即获得向上,向右(*)的前向矢量(由于惯用性,星号可能是左矢量)。


3x3详细信息:

假设您有一个3x3矩阵$ M $:

$
M_ {ij} =
\开始{bmatrix}
M_ {1,1}&M_ {1,2,&M_ {1,3} \\
M_ {2,1}&M_ {2,2}&M_ { 2,3} \\
M_ {3,1}&M_ {3,2}&M_ {3,3} \\
\ end {bmatrix}
$

让我们看看将其乘以向量$ \ begin {bmatrix} 1,0,0 \ end {bmatrix} $:会发生什么? }
M_ {1,1}&M_ {1,2}&M_ {1,3} \\
M_ {2,1}&M_ {2,2}&M_ {2,3 } \\
M_ {3,1}&M_ {3,2}&M_ {3,3} \\
\ end {bmatrix}
*
\ begin { bmatrix}
1 \\
0 \\
0 \\
\ end {bmatrix}
=
\ begin {bmatrix}
M_ {1,1} \\
M_ {2,1} \\
M_ {3,1} \\
\ end {bmatrix}
$

现在让我们尝试向量$ \ begin {bmatrix} 0,1,0 \ end {bmatrix} $:

$
\ begin {bmatrix}
M_ {1,1}&M_ {1,2,&M_ {1,3} \\
M_ {2,1}&M_ {2,2}&M_ {2 ,3} \\
M_ {3,1}&M_ {3,2}&M_ {3,3} \\
\ end {bmatrix}
*
\ begin {bmatrix}
0 \\
1 \\
0 \\
\ end {bmatrix}
=
\ begin {bmatrix}
M_ {1,2} \\
M_ {2,2} \\
M_ {3,2} \\
\ end {bmatrix}
$

最后,向量$ \ begin {bmatrix} 0,0,1 \ end {bmatrix} $:

$
\ begin {bmatrix}
M_ {1,1}和M_ {1,2}和M_ {1,3} \\
M_ {2,1}和M_ {2,2}和M_ {2,3} \\
M_ {3,1}和M_ {3,2}和M_ {3,3} \\
\ end {bmatrix}
*
\ begin {bmatrix}
0 \\
0 \\
1 \\
\ end {bmatrix}
=
\ begin {bmatrix}
M_ {1,3 } \\
M_ {2,3} \\
M_ {3,3} \\
\ end {bmatrix}
$

这表明无论矩阵$ M $是什么,第一列都是该矩阵定义的坐标空间的X轴向量。第二列是Y轴向量,第三列是Z轴向量。

这些向量在全局空间中。

$
M =
\ begin {bmatrix}
X_x&Y_x&Z_x \\
X_z&Y_z&Z_z \\
\ end {bmatrix}
$

您甚至可以看到单位矩阵中的情况是正确的,其中X,Y和Z向量恰好是您期望的:

$
M =
\ begin {bmatrix}
1&0&0 \\
0&1&0 \\
0&0&1 \\
\ end {bmatrix}
$


3x3矩阵很像一个向量,它描述方向但没有位置。

如果您有一个表示3d变换并且使用齐次坐标进行平移的4x4矩阵,则可以使用该矩阵获取X,Y,Z方向向量,还可以从原点获取平移。 br />
希望这是有用的,并且不会误导不太常见的矩阵类型。我看到一个删除的答案说类似,所以手指交叉了:P

评论


$ \ begingroup $
“立即向上,向右(*)前进矢量”:您能否指定代表X,Y或Z轴的行或列,为什么?
$ \ endgroup $
–nbro
17年1月12日在18:38

$ \ begingroup $
让我知道这是否对nbro有帮助!
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
17年1月12日在19:31

$ \ begingroup $
是的,这很有帮助,谢谢!我还有一个疑问。您说“您可以看一下并立即获取右(*)正向向量”,您是在说局部坐标系吗?根据@Oliver提供的答案,此矩阵相对于另一个定义了新的坐标系,但这通常是隐式的。如果我最终想到该矩阵表示转换,则这种情况对我有意义。但是,我现在感到困惑的是,转换矩阵的列(或行)是否实际定义了新空间的基础……我应该回头回顾一下。
$ \ endgroup $
–nbro
17年1月12日19:47



$ \ begingroup $
是的。在我的示例中,您可以使用这些列来获取其描述的坐标系的基向量。列在任何父坐标系所在的坐标系中。如果没有父坐标系,则它们位于全局空间中。否则,它们在父级的坐标系中。 HTH,但我知道有时需要时间和多次尝试来吸收新概念:P
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
17年1月12日在19:54

$ \ begingroup $
当您说“列位于任何父坐标系所在的坐标系中”时,您的意思是“列位于任何...的向量空间中”。
$ \ endgroup $
–nbro
17年1月12日,19:57



#2 楼

矩阵可用于将坐标系转换为新的坐标系。更具体地说,它可以用于变换坐标系的基向量。这就是它定义新坐标系的方式。当然,它总是与另一个坐标系有关,但通常是隐式的。

局部坐标系通常表示仅特定于场景一部分的坐标系。例如,定义对象顶点的坐标系。然后将这些顶点与矩阵一起转换为具有场景其余部分的某个全局坐标系。这就是为什么说矩阵定义了相对于全局坐标系的局部坐标系的原因。
这样说,还有许多其他含义。纹理坐标也是局部坐标系的一种形式:在表面上定义的2D坐标系。它特定于该表面,通常不由转换矩阵定义。