TRS复合矩阵的拆解
参考:百度百科-矩阵乘法,转置矩阵,逆矩阵
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
TRS矩阵拆解(Translate, Rotate, Scale):
按照Translate, Rotate, Scale顺序复合的矩阵,我们可以对它进行拆解,拆解出原始的Translate, Rotate, Scale矩阵。
下面是拆解得理论过程。
TRS所在分量
矩阵形如:
m00, m01, m02, m03
m10, m11, m12, m12,
m20, m21, m22, m23
m30, m31, m32, m33
Rotate和Scale的分量部分位于:3*3的区域
[m00, m01, m02]
[m10, m11, m12] = Rotate * Scale
[m20, m21, m22]
Translate的分量部分位于:第4行的前三个部分
m30, m31, m32
Translate矩阵分离
Translate矩阵是最外层矩阵,它直接起作用到Translate分量部分,直接可以分离出来
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[m30, m31, m32, 1]
Roate\Scale矩阵分离基础
a. Rotate矩阵的逆矩阵为自身的转置矩阵,
b. Scale矩阵的转置矩阵为自身本身
c. 所以Transpose(Rotate*Scale)= Transpose(Scale) *Transpose(Rotate) = Scale * Inverse(Rotate)
d. 对于逆矩阵而言:A * Inverse(A) = 单位矩阵; 对于矩阵乘法 A * B * C = A * (B * C)
e. 所以Transpose(Roate * Scale) * Rotate * Scale * = Scale * Inserse(Rotate) * Rotate * Scale * = Scale * 单位矩阵 * Scale = Scale * Scale
Scale矩阵分离
基于上面的推理,把3*3矩阵部分进行转制,然后乘原来的矩阵,得出Scale * Scale,而Scale矩阵本身就是只在对角线有值,各值开平方就得出了Scale矩阵
[m00, m10, m20] [m00, m01, m02] [scale(x*x), 0, 0]
[m01, m11, m21] muti [m10, m11, m12] = scale*scale = [0, scale(y*y), 0]
[m02, m12, m22] [m20, m21, m22] [0, 0, scale(z*z)]
Rotate矩阵分离
有了Scale矩阵,就可以简单的得出Scale矩阵的逆矩阵
[1/scale(x), 0, 0]
[0, 1/scale(y), 0]
[0, 0, 1/scale(y)]
有了scale逆矩阵就可以的出Rotate矩阵的逆矩阵
Roate * Scale * Inverse(scale) = Roate
[m00, m01, m02] [1/scale(x), 0, 0]
[m10, m11, m12] muti [0, 1/scale(y), 0] = Rotate
[m20, m21, m22] [0, 0, 1/scale(y)]
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
TRS复合矩阵的拆解相关推荐
- html5的video怎么把里面的控制器移出来_日产Pro-Pilot的ADAS控制器拆解
接昨天的文章,我们来继续看一下日产Propilot的硬件迭代,这里主要分成几个部分,1)摄像头拆解 2)ADAS控制器1拆解和ADAS2控制器拆解,目前Propilot还没有拆解信心,但是通过官方发布 ...
- 3天拆解数据分析全流程!
一.数据分析的学习困惑 数据分析作为基础能力,关于如何学习,可以先了解常见的学习困惑: 理论.方法都会,一到实际操作就无从下手 学会了数据分析却不会用可视化图表进行结果展示 数据分析没思路,总也抓不住 ...
- 实操教程|Pytorch常用损失函数拆解
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 小新 来源 | https://lhyxx.top 编辑 ...
- 为什么高手都懂得拆解目标?
有效地完成目标需要一系列流程和工具. 1.制定目标 SMART原则,是一套制定目标的原则. S-M-A-R-T这5个字母,代表Specific(具体的),Measurable(可衡量的),Attain ...
- 管理大师基本功:目标拆解能力
对公司战略目标有效拆解的前提是了解战略目标,先做出战略目标规划.把整个公司的战略规划做好之后,我们要对公司的战略进行澄清,要把这些目标进行拆解. 比如,哪些是公司的财务的目标.哪些是客户的目标.哪些是 ...
- 管理层如何做好目标管理?战略目标拆解是核心!
目标管理(MBO)是管理大师彼得·德鲁克提出的一种科学且优秀的企业管理方法.它倡导的是管理层和成员亲自参加工作目标的制定和拆解,达成共识,实现"自我控制",这样可以有效提高员工自驱 ...
- 拆解交易系统--性能优化,安全加固与弹性扩缩容
点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 前几篇文章我们拆解了交易系统架构层次的设计方案,对于代码细节我们讨论很很少,今天基于几个方面简短的介绍一下,未来有时间可以针 ...
- 拆解交易系统--模块拆解与服务化
用户高速发展阶段如何做好稳定性 围绕做好稳定性可以从几个角度做,而不是简单的监控,压测,告警和容量规划. 第一件事 :设计方案尽量简单 做好架构很重要的一个原则是,大系统做小,精简设计方案.在众多可能 ...
- Excel VBA林木冠幅、分枝胸径字符串的拆解
一.功能 diacrown_dia(Rng, front=True)函数:将记录林木冠幅的字符串Rng(如"5×7"或"5*7")拆解为东西冠幅(如5)和南北冠 ...
最新文章
- Lesson 2.张量的索引、分片、合并以及维度调整
- 基于python的nlp预备知识
- 新写的c++日志库:log4K
- CentOS 6.5系统安装配置图解教程(详细图文)
- Python编程的Turtle 库画出“精美碎花小清新风格树”,速取代码!
- 《Linux 命令行大全》.pdf
- Android 360分包,如何安装分包app安装包
- 基于jsp+mysql+Spring+mybatis的SSM健身房管理系统
- 如何使用Dart的Stream(一)
- 会变色的背景透明NSButton
- 4016: 辉夜的夜空明珠(moon)
- imx6q android nfs normal boot log
- 频数直方图的步骤_把握步骤 正确绘制频数分布直方图
- Hibernate笔记+相关面试题
- 使用安卓手机上的shh软件ConnectBot管理您的Linux服务器
- 【Unity-讲座笔记】江毅冰:从游戏到实时电影
- 用blender和MakeHuman生成人体动画
- 查询mysql 的内存使用_mysql查看内存使用情况
- Python中的链表和数组如何区分?
- 【云开发】小程序端操作数据库详解