罗湖网站设计价格,贵州毕节网站建设,wordpress 生成 app,牡丹江网站开发转自#xff1a;矩阵变换坐标系 深入理解 - 知乎
网址链接#xff1a;从坐标系图中理解“空间变换”
小谈矩阵和坐标变换
矩阵坐标系变化理解
让我们从一个实际的例子入手#xff1a;下图是一个用两维的笛卡尔坐标系表示的二维空间。 其中#xff0c;黑色坐标系 x-y代表…转自矩阵变换坐标系 深入理解 - 知乎
网址链接从坐标系图中理解“空间变换”
小谈矩阵和坐标变换
矩阵坐标系变化理解
让我们从一个实际的例子入手下图是一个用两维的笛卡尔坐标系表示的二维空间。 其中黑色坐标系 x-y代表一个二维空间蓝色坐标系 i-j代表另外一个二维空间。已知蓝色坐标系轴在黑色坐标系下对应的值是i(1,1), j(-1,1)又知橙色向量 p 处在 i-j 空间中其坐标值为(2,1)。现在的问题是这个 p 被转换到黑色坐标系 x-y 空间下它的坐标值是什么
解决这个问题一个最关键也最直接的想法是“向量分解与再合成”。
p 可以被分解到 i 和 j 两个方向得到 p 2ij同时 i 又可以分解到 x 和 y 两个方向得到 i x y另外 j 也可以分解得到 j -x y。于是我们全部展开就得到 p(i-j) 2i j 2(x y) (-x y) x 3y p(x-y) 。
因此点 p 在 x-y 空间下的坐标值为(1,3)。 这种方法可以用来讨论更一般的情况。假设p点在 i-j 坐标系下为(k1,k2)在 x-y 坐标系下为(q1,q2)。同样地有基向量 i 对应在 x-y 空间中为(m1,m2)j 对应在 x-y 空间中为(n1,n2)。
于是我们有以下推导
i m1x m2yj n1x n2y
于是
p(i-j) k1i k2j k1(m1x m2y) k2(n1x n2y) (k1m1 k2n1)x (k1m2 k2n2)y
于是
p(i-j) (k1m1 k2n1, k1m2 k2n2) (q1, q2) p(x-y)
得到
q1 k1m1 k2n1
q2 k1m2 k2n2
变换成矩阵形式: 其中(k1,k2)是 i-j 空间下的坐标值而(q1,q2)是 x-y 空间下的坐标值。中间的矩阵就是用来做转换的矩阵。从中我们可以发现如果竖着来观察向量(m1,m2)就是基向量 i 在 x-y 空间下的坐标值而向量(n1,n2)则是基向量 j 在 x-y 空间下的坐标值。这个矩阵实际上就是由空间 i-j 下的基向量在空间 x-y 下的坐标值构成的。
1 矩阵的行序和列序也称行优先或列优先仅仅是指矩阵的存储方式即我们如果用一个4*4数组m存储矩阵如果m[0][0]-m[0][3]连续存储了矩阵的第一行那么就是行优先反之就是列优先。无论是行优先还是列优先它们代表的数学意义是相同的。 2 如果矩阵是行序那么它的第一列m[0][0],m[1][0],m[2][0]就代表X变换第二列就是Y变换第三列就是Z变换。 我们来看看为什么 刚才提到矩阵把线性空间中的一个点给变换到另一个点不妨称变换前的点为P1(x1,y1,z1)变换后的点为P2(x2,y2,z2 那么根据线代中的矩阵乘法P1 * M P2展开就成了 m00,m01,m02 (x1,y1,z1) * m10,m11,m12 x1*m00y1*m10z1*m20 x1*m01* m20,m21, m22 y1*m11z1*m21,x1*m02y1*m12z1*m22
所以 x2 x1*m[0][0] y1*m[1][0] z1*m[2][0]; y2 x1*m[0][1] y1*m[1][1] z1*m[2][1]; z2 x1*m[0][2] y1*m[1][2] z1*m[2][2]; 看出什么了吗 如果把一个行序矩阵接下来讨论的都是行序矩阵就省略行序二字了的每一列分别用X,Y,Z三个矢量来表示那么M就表示为XYZ三根轴。 现在矩阵M看起来是不是很像一个坐标系而P1到P2的变换就是P1分别与X,Y,Z的点积 也就是矩阵M是把P1从老坐标系变换到新坐标系而矩阵的三列三根轴就分别代表了新坐标系的三根轴在老坐标系中的坐标 而点积的几何意义其实就是求取投影所以坐标变换的几何本质刚才已经讨论过其代数本质就是把一个点分别投影到三根轴上去而已 再仔细想一想P1在XYZ三根轴上的投影不正是它在新坐标系下的坐标吗这样一来坐标变换是不是就太容易理解了呢
综上理解得出: