矩阵与矩阵变换

 我来答
白露饮尘霜17
2022-06-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6433
采纳率:100%
帮助的人:34万
展开全部

矩阵 是由 m X n 个标量组成的长方形数组;矩阵属于网格结构,有 行、列 之分。

实际上矢量可以看成nX1的 列矩阵 或者1Xn的 行矩阵 ,其中n对应了矢量的维度。列如矢量 v=(3,8,6)可以写成下面两种矩阵。

注意: 矩阵的乘法不满足交换律( AB不等于BA );但是满足结合律( (AB)C = A(BC) );
ABCDE = ((A(BC))D)E = (AB)(CD)E

假设我们有一个矢量 v=(x,y,z) ,我们可以转换成行矩阵 v=(x y z) 或列矩阵 v=(x y z) T ,这里我们有个矩阵 M ,我们将他们分别相乘,会得到两个结果。

显然在与矩阵相乘的时候选择行矩阵还是列矩阵直接决定了矩阵乘法的书写次序和结果值。

注意: 在Unity中,常规的做法是把矢量放在矩阵的右侧,把矢量转换成列矩阵来进行运算。这也导致了我们的矩阵运算乘法通常是从右往左乘。 CBAv = (C(B(Av)))

变换是指我们把一些数据,顶点、方向矢量甚至是颜色等,通过某种方式进行转换的过程。

我们先来看一个简单的2D例子,我们有一个2X2的矩阵;

我们从这个矩阵中获取基矢量 p q ;
p = [2 1]
q = [-1 2]
当我们将如果一张图的原基矢量为 x(1,0),y(0,1) ,将它转换成上面矩阵时就得到了下面的过程。这个转换过程就称为变换,我们可以看出,这个变换过程不仅包含旋转,还包含拉伸。

如果我们想对一个矩阵进行平移操作,那么我们需要将这个矩阵扩展到4X4的矩阵,为此我们需要将原来的三维矢量转换成四维矢量,也就是我们说的 齐次坐标
从三维坐标转换到齐次坐标是把其 w 设为1。而对于方向矢量来说,我们需要把 w 设为0。

这里我将对应的公式和方法在下图中展示,需要注意的是,矩阵的旋转有绕不同的轴旋转,他们所对应的公式也有所不同。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式