开始学习矩阵时,知道旋转、移动都可以由矩阵乘法来实现,想着也是挺简单的。

比如一个点,

第一次绕X轴旋转,设绕X轴旋转矩阵为

,

这样

,

得到点绕X轴旋转后的点,这时如果再绕Y轴旋转,可以看做是新的点P1绕Y轴旋转,设绕Y轴旋转的的矩阵为

,

这样

如果旋转后得到的新点,又要继续绕世界某坐标轴旋转,只需如下

是不是觉得很简单,因为这种理解方式是很常规理解方式,把每次的旋转都理解成是某个点绕某轴旋转,也就是点直接与旋转矩阵相乘,即,但由于矩阵结合率,只要相乘顺序不变,如,所以

上面这个理解,我觉得大多数人都能理解。可是在实际应用中,常常看到的是矩阵乘点,如

,

为了使,即,发现之前是点P乘A矩阵的列,现在是矩阵 的行乘以,可得

之前点矩阵后的点的x坐标

现在矩阵乘点后的点的x坐标

很明显要让,需要让的列成为的行,所以,即

即 

这时可得,

到了这,之前我犯了个错,因为,就以为所有矩阵,可有天发现教材写的是,当时我就想相等不.

后来我觉得当P为只有一行或只有一列时,上式相等是成立的,现在简单证明下。

因为矩阵乘法结合率,只要顺序不变,可以先去求右边的结果,手动计算方式从右往左乘,即

.

因为,则

因为P1只有一行且在最右端,实际上矩阵乘点时,是把P1作为列相乘,所以

因为根据点乘矩阵,,然后又根据,所以

,

从而得到

本来点依次乘矩阵,哪怕是点去乘多个矩阵的组合也很好理解,为什么实际使用是用矩阵去乘点呢?

我想可能是为了矩阵相乘的效率,比如一个节点下面连了很多多层的子节点,如果用点乘矩阵,那么每个子节点的矩阵会从下一直往上乘,到父节点时,父节点无法利用从子节点得到的矩阵乘积,当对父节点进行操作时,父节点会重复向上相乘,一直乘到根节点才能得到完整的矩阵乘积。

而如果采用矩阵乘点,即矩阵从上往下乘,可以把父节点所得的乘积传给子节点,子节点只需要直接将自身的矩阵乘父矩阵乘积就可以,减少计算消耗。

还有一个我发现的是在opengl里,因为opengl的矩阵采用的是列优先,那么用点乘矩阵的方式推出来的矩阵,在opengl里用矩阵乘点时,可以直接使用点乘矩阵方式退出来的矩阵,不需要行列互换,即

(行优先,点乘矩阵)=(行优先,矩阵乘点)

在opengl用列优先存储时,可得

,居然在opengl最终使用的还是点乘矩阵方式推导出的矩阵,只不过顺序颠倒而已,我在想这会不会就是opengl为什么采用列优先存储。

关于矩阵相乘顺序的理解(跟旋转没关)相关推荐

  1. 06 ,矩阵的运算:加法运算,数乘,矩阵乘向量,矩阵相乘

    1 ,矩阵计算 : 加法运算 前提 : 必须同型矩阵之间才可以进行加法运算 运算 : 两个 m * n 矩阵相加 总结 : 对应元相加 2 ,矩阵计算 : 数乘 计算规则 : 3 ,矩阵计算 : 矩阵 ...

  2. 矩阵相乘的理解(矩阵相乘的几何意义)及证明过程

    矩阵相乘的理解 1.基底的理解 2.证明过程 3.公式分析 3.1分析 3.2 3.2.1 n3=n2n3=n2n3=n2 时: 3.2.2 n3<n2n3<n2n3<n2 时: 3 ...

  3. html计算两个数相乘,多个矩阵相乘运算顺序

    三个矩阵相乘从左向右算还是从右算起 三个矩阵相乘从左向右算和从右算起都可以 据结合律(AB)C=A(BC),先算前两个与先算后两个都可以,只要矩阵的前后次序保持不变即可. 矩阵的数乘满足以下运算律: ...

  4. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、编写自定义函数通过因子模式矩阵与因子相关性矩阵相乘计算因子载荷矩阵

    R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.编写自定义函数通过因子模式矩阵与因子相关性矩阵相乘计算因子载荷矩阵 目录

  5. 矩阵陈列:平移、缩放、旋转、镜像、矩阵相乘、变化的实现_NXopen-UG二次开发_新浪博客

    矩阵陈列:平移.缩放.旋转.镜像.矩阵相乘.变化的实现 uf5940_ uf5941_ uf5942_ 矩阵相乘 uf5943_ 平移 uf5944_ 缩放 uf5945_ 旋转 uf5946_ 镜像 ...

  6. 如何理解矩阵相乘的几何意义或现实意义?

    作者:deng will 链接:https://www.zhihu.com/question/28623194/answer/135658852 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  7. 矩阵相乘的strassen算法_矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)...

    矩阵乘法的Strassen 这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率. 先来看看咱们在高等代数中学的普通矩阵的乘法 两个矩阵相乘 上边这种普通求解方法的复杂度为: O(n3) 也称 ...

  8. 利用openmp实现矩阵相乘_MP116:线性代数补习班(4):矩阵的张量积

    下面我们探讨矩阵张量积所蕴含的意义.将域 上的 维 方矩阵(phalanx)的集合记为 ,矩阵张量积的计算如下: [余扬政1998] 物理学中的几何方法 后面将看到,矩阵的张量积可以不限于方矩阵. H ...

  9. OpenGL之矩阵相乘

    单位矩阵 主对角线上数据都是1,其余元素都是0,即为单元矩阵. 向量 X 单元矩阵 = 向量 X 1,不会发生任何变化. 向量与单元矩阵相乘的前提是:向量的列数 == 单元矩阵的行数 矩阵分类 行优先 ...

  10. 转圈显示的Java程序和两矩阵相乘

    1.转圈显示的Java程序,将N x N的方阵转圈赋值并显示输出.如图:N=8,8x8方阵转圈填数结果. 解析:这是一个依靠矩阵中每个元素的下标对其进行操作的典型事例.其要求将1~NXN之间的整数按照 ...

最新文章

  1. ICCV 2021 Workshop 盘点
  2. 高速缓存的数据结构:拉链散列表
  3. php ob静态缓存
  4. Vue-Cli Error: EACCES: permission denied 解决方案
  5. 告别国外 IDE,阿里 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
  6. Java工作笔记-接入互联网的免费WebService
  7. C#实现AES加密和解密
  8. 解决使用adprep升级windows2003/win2008/win2012域时遇到的问题
  9. java smack_java – 如何在Android smack中正确接受好友请求?
  10. python3 安装PIL
  11. 世界编程语言2008年初排行榜
  12. python安装详细步骤mac_Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
  13. vue使用element-ui的el-input监听不了回车事件解决
  14. 转载:相同版本的JVM和Java应用,在 x86 和AArch64 平台性能相差30%
  15. 《Clean Code》 代码简洁之道
  16. 数据库 软件实施 工程师
  17. 老毛子 安装 mysql_老毛子固件mysql启动失败的解决方法
  18. Protobuf使用手册--中文版
  19. 【DDD落地实践系列】DDD领域驱动设计如何进行工程化落地
  20. 全球域名商域名增量Top15:51DNS排名降至第十二

热门文章

  1. 【自然语言处理】【聚类】ECIC:通过迭代分类增强短文本聚类
  2. Python—Django中的视图(views.py)
  3. PyCharm中 Django导入views时出现报错红线
  4. TS2339: Property 'debounceTime' does not exist on type 'Observableany'. - Angular 6
  5. 优矿 python_【优矿uqer.io】量化分析师的Python日记【第5天:数据处理的瑞士军刀pandas】...
  6. Python量化交易实战教程汇总
  7. 一个app项目如何从想法一步一步落地?有哪些必要的流程?
  8. 小谈startup类ConfigureServices方法的作用
  9. 再创学习生命力—破与立中成长
  10. 软件项目管理大作业:项目内容介绍