矩阵是怎样变换向量的

一般来说,方阵能描述任意线性变换。线性变换保留了直线和平行线,但原点没有移动。线性变换保留直线的同时,其他的几何性质如长度、角度、面积和体积可能被变换改变了。从非技术意义上说,线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折”坐标系。

矩阵是怎样变换向量的

向量在几何上能被解释成一系列与轴平行的位移,一般来说,任意向量v都能写成“扩展”形式:

另一种略有差别的形式为:

注意右边的单位向量就是x,y,z轴,这里只是将概念数学化,向量的每个坐标都表明了平行于相应坐标轴的有向位移。

让我们将上面的向量和重写一遍,这次分别将pqr定义为指向+x,+y和+z方向的单位向量,如下所示:

v = xp + yq + zr

现在,向量v就被表示成向量pqr的线性变换了,向量pqr称作基向量。这里基向量是笛卡尔坐标轴,但事实上,一个坐标系能用任意3个基向量定义,当然这三个基向量要线性无关(也就是不在同一平面上)。以pqr为行构建一个3 x 3矩阵M,可得到如下矩阵:

用一个向量乘以该矩阵,得到:

如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于执行了一次坐标转换,如果aM=b,我们就可以说,Ma转换到b

从这点看,术语“转换”和“乘法”是等价的。

坦率地说,矩阵并不神秘,它只是用一种紧凑的方式来表达坐标转换所需的数学运算。进一步,用线性代数操作矩阵,是一种进行简单转换或导出更复杂转换的简便方法。

矩阵的形式:

基向量[1, 0, 0], [0, 1, 0], [0, 0, 1]乘以任意矩阵M

用基向量[1, 0, 0]乘以M时,结果是M的第1行。其他两行也有同样的结果,这是一个关键的发现:矩阵的每一行都能解释为转换后的基向量。

这个强有力的概念有两条重要性质:

1、有了一种简单的方法来形象化解释矩阵所代表的变换。

2、有了反向建立矩阵的可能 ---- 给出一个期望的变换(如旋转、缩放等),能够构造一个矩阵代表此变换。我们所要做的一切就是计算基向量的变换,然后将变换后的基向量填入矩阵。

首先来看看2D例子,一个2 x 2矩阵:

这个矩阵代表的变换是什么?首先,从矩阵中抽出基向量pq

p = [2   1]

q = [-1  2]

图7.1以“原”基向量(x轴,y轴)为参考,在笛卡尔平面中展示了这些向量。

如图7.1所示,x基向量变换至上面的p向量,y基向量变换至q向量。所以2D中想象矩阵的方法就是想象由行向量构成的“L”形状。这个例子中,能够很清楚的看到,M代表的部分变换是逆时针旋转26度。

当然,所有向量都被线性变换所影响,不只是基向量,从“L”形状能够得到变换最直观的印象,把基向量构成的整个2D平行四边形画完整有助于进一步看到变换对其他向量的影响,如图7.2所示:

平行四边形称作“偏转盒”,在盒子中画一个物体有助于理解,如图 7.3 所示:

很明显,矩阵M不仅旋转坐标系,还会拉伸它。

这种技术也能应用到3D转换中。2D中有两个基向量,构成"L"型;3D中有三个基向量,它们形成一个”三脚架“。首先,让我们展示出一个转换前的物品。图7.4展示了一个茶壶,一个立方体。基向量在”单位“向量处。

(为了不使图形混乱,没有标出z轴基向量[0, 0, 1],它被茶壶和立方体挡住了。)

现在,考虑以下3D变换矩阵:

从矩阵的行中抽出基向量,能想象出该矩阵所代表的变换。变换后的基向量、立方体、茶壶如图7.5所示:

这个变换包含z轴顺时针旋转45度和不规则缩放,使得茶壶比以前”高“。注意,变换并没有影响到z轴,因为矩阵的第三行是[0, 0 , 1]。

时间: 2024-11-08 19:14:55

矩阵是怎样变换向量的的相关文章

“生动”讲解——矩阵的空间变换

几何图形的矩阵表示: 我们把每个顶点坐标看成一个行向量,采用齐次坐标法,即每个顶点坐标增加一个相同的分量1作为矩阵的一行,这样就可以用矩阵表示图形了.如: 点A(1,-1),增加一个分量1,将其作为一个矩阵的行向量A=[1?11]; 以此类推,所以这个图形可以用矩阵来表示,即: P=?????131?2?113?21111????? 平移变换: 如果平移向量是(a, b),点(x, y)平移后的点为(x+a, y+b). 如下图所示: 平移变换矩阵: 平移变换矩阵为:???10a01b000??

SharpGL学习笔记(八) 矩阵堆栈和变换的综合例子: 机器人

我们先引入关于"矩阵堆栈"的官方说法: OpenGL的矩阵堆栈指的就是内存中专门用来存放矩阵数据的某块特殊区域.实际上,在创建.装入.相乘模型变换和投影变换矩阵时,都已用到堆栈操作.一般说来,矩阵堆栈常用于构造具有继承性的模型,即由一些简单目标构成的复杂模型.例如,一辆自行车就是由两个轮子.一个三角架及其它一些零部件构成的.它的继承性表现在当自行车往前走时,首先是前轮旋转,然后整个车身向前平移,接着是后轮旋转,然后整个车身向前平移,如此进行下去,这样自行车就往前走了.矩阵堆栈对复杂模型

矩阵2范数与向量2范数的关系

向量2范数是对应元素平方和: 矩阵2范数是:其中是矩阵的最大特征值. 除此之外,矩阵有一个F范数(Frobenius范数)倒是跟向量的2范数比较相似,是矩阵内所有元素平方和: 矩阵的2范数是向量二范数对应的诱导范数.给定某一种向量范数 ,它所对应的矩阵范数定义为: 左边的范数是矩阵范数,而右边分子分母都是向量范数,因为也是一个向量,通过这种方式定义出来的矩阵范数称为矩阵的诱导范数.可以证明,矩阵的2范数是由向量2范数诱导定义的. 更多的诱导范数的例子可以参照维基百科:Matrix norm -

由矩阵运算来看初等矩阵的左乘右乘所影响到矩阵的行列变换的本质(转)

Latex排版的,所以之上截图吧: 顶 0 踩

【转】【矩阵】三维坐标旋转矩阵算法

3D数学 ---- 矩阵和线性变换 一般来说,方阵能描述任意线性变换.线性变换保留了直线和平行线,但原点没有移动.线性变换保留直线的同时,其他的几何性质如长度.角度.面积和体 积可能被变换改变了.从非技术意义上说,线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折”坐标系. 矩阵是怎样变换向量的 向量在几何上能被解释成一系列与轴平行的位移,一般来说,任意向量v都能写成“扩展”形式: 另一种略有差别的形式为: 注意右边的单位向量就是x,y,z轴,这里只是将概念数学化,向量的每个坐标都表明了平行于相

[转载]矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先

[转载]http://www.xuebuyuan.com/882848.html (一)首先,无论dx还是opengl,所表示的矢量和矩阵都是依据线性代数中的标准定义的:“矩阵A与B的乘积矩阵C的第i行第j列的元素c(ij)等于A的第i行于B的第j列的对应元素乘积的和.”(实用数学手册,科学出版社,第二版)例如c12 = a11*b11+a12*b21+a12*b13... (二)在明确了这一点后,然后我们再看“矩阵的存储方式”,矩阵存储方式有两种,一种是“行主序(row-major order

矩阵及其变换、特征值与特征向量的物理意义

矩阵及其变换.特征值与特征向量的物理意义 最近在做聚类的时候用到了主成分分析PCA技术,里面涉及一些关于矩阵特征值和特征向量的内容,在网上找到一篇对特征向量及其物理意义说明较好的文章,整理下来,分享一下. 一.矩阵基础[1]: 矩阵是一个表示二维空间的数组,矩阵可以看做是一个变换.在线性代数中,矩阵可以把一个向量变换到另一个位置,或者说从一个坐标系变换到另一个坐标系.矩阵的“基”,实际就是变换时所用的坐标系.而所谓的相似矩阵(),就是同样的变换,只不过使用了不同的坐标系.线性代数中的相似矩阵实际

opengl矩阵向量

如何创建一个物体.着色.加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣.我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间.我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体. 向量 向量最基本的定义就是一个方向.或者更正式的说,向量有一个方向(Direction)和大小(Magnitude,也叫做强度或长度).你可以把向量想像成一个藏宝图上的指示:"向左

第四十篇 Numpy.array的基本操作——向量及矩阵的运算

No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有元素 * 2 No.4. 将向量或矩阵中的所有元素 / 2 或 // 2 No.5. 幂运算 No.6. 取余 No.7. 取绝对值 No.8. 三角函数 No.9. 取e的x方 No.10. 取任意数的x方 No.11. 取以e为底x的对数 No.12. 取以任意数为底x的对数 No.13. 矩阵