图形学笔记二 正交矩阵、转置矩阵和旋转

2021-12-23  本文已影响0人  合肥黑

参考课程P4:
https://www.bilibili.com/video/BV1X7411F744?p=4

一、正交矩阵和转置矩阵

参考对称矩阵、对角矩阵与三角矩阵

1.对称矩阵

对称矩阵(Symmetric Matrix)是指元素以主对角线为对称轴对应相等的矩阵,例如:


image.png

可以看到,对称矩阵的转置等于其自身

2.对角矩阵

对角矩阵(Diagonal Matrix)是指除主对角线之外其他元素都为0的矩阵,例如:


image.png
3.三角矩阵

三角矩阵(Triangular Matrix)分为上三角矩阵和下三角矩阵。
上三角矩阵(Upper Triangular Matrix)是指主对角线以下元素全为0的矩阵,如:


image.png

下三角矩阵(Lower Triangular Matrix)是指主对角线以上元素全为0的矩阵,如:


image.png
可以看到,对角矩阵一定是三角矩阵。
4.参考正交矩阵

正交矩阵是指其转置等于逆的矩阵
正交:可以简单理解成就是垂直.

image.png
对于正交矩阵,组成它的列向量 构成了一个空间的基,称之为:规范正交基。 而我们知道:对于一个空间而言,我们是可以找到很多个不同的基来表示的(参考相似矩阵的基底变换),那对于一个空间:假设已知的基底是非规范正交基,有什么办法获取到它的规范正交基呢?【施密特正交法】。

以三维空间为例,我们希望正交矩阵是:


image.png

但是实际上他很可能是下边这个样子:


image.png
亦即以z轴为中心逆时针旋转了45°, 此时向量a,b,c依然相互正交,但是其列向量并不都在标准轴上.而对角化的结果是一个对角矩阵,本质就是把矩阵列向量都放到标准轴上。 那么很显然:正交矩阵一定可以做到!

参考为何正交矩阵一定可以对角化?
正交矩阵是一个在三维坐标系中歪着摆的立方体。对角化就是把这个立方体摆正来(也就是让它某一个顶点放在原点上,同时这个顶点的三条边正好对在三维坐标系的xyz三条轴上)。所以这个定理的意思就是,任何歪着摆的立方体劳资都能把它摆正了。这定理还是蛮直观的。

所以结论就是:凡是正交矩阵一定可以对角化!

5.转置矩阵

将矩阵的行列互换得到的新矩阵称为转置矩阵,转置矩阵的行列式不变。


image.png

转置矩阵:


image.png
如果N阶方阵和它的转置相等,则称为对称矩阵。

转置矩阵,在3Blue1Brown的线代视频中没有深入介绍,在此直接关注如何应用即可。

5.在P4的开头,闫大佬提到了正交矩阵和转置矩阵
image.png

写出旋转θ和旋转负θ的矩阵,会发现旋转负θ,等于旋转θ的转置,这是正交矩阵的性质。通常求逆矩阵是很费性能的,而求转置矩阵则非常简单。

二、3d transformations
1.平移和缩放比较简单
image.png
2.旋转,这里视频讲的有点快,我描述一下自己的理解
image.png
这里使用右手法则,以绕X轴旋转为例,仍然使用3Blue1Brown的思路,去看i帽、j帽、k帽的基坐标变换:
显然,绕x旋转时,x方向的基向量不变,即竖着的(1,0,0),然后就是y和z轴:
image.png
显然,y变成了(0,cos α,sin α)
image.png
显然,z变成了(0,-sinα,cosα)
所以,绕x轴旋转的线性变换就是:
image.png
绕y轴时,我们可以看成有一个xz轴的平面在旋转,如图,x轴旋转到其左上方的红轴,变成(cos α,0,-sin a),z变成了(sin α,0, cos α)
图画得有点难看……
绕z旋转同理,就不画了。
3.罗德里格旋转公式(Rodrigues' rotation formula)

视频很快就开始讲这个公式,然后我没有听懂,还是自己搜索一下吧。首先是百度百科,给了这个公式的定义:

向量旋转公式最早由法国数学家本杰明·奥伦德·罗德里格(Benjamin Olinde Rodrigues(1795–1851))导出,后来被应用在很多领域。设v是一个三维空间向量,k是旋转轴的单位向量,则v在右手螺旋定则意义下绕旋转轴k旋转角度θ得到的向量可以由三个不共面的向量v, k和k×v构成的标架表示:


image.png

然后B站视频有个公式推导,有了前面的线代基础,可以直接看P2:https://www.bilibili.com/video/BV1yW41177Y8?p=2

image.png

视频首先讲了绕Z轴的旋转,此时定义k向量与Z轴平行,V向量与X轴平行,然后旋转了θ,跑到了v rot位置。如图的公式很容易理解,后半部分的kv点乘其实就是右手法则(四根手指指向K之后向V弯曲,拇指的方向正是Y)下的Y坐标轴,再乘以sina θ,就是旋转后的向量在Y轴的投影即Y坐标值。

image.png
百度百科用的是这张图

这里作者的思路就是,先把v分解成向上的向量和向左的向量。向左的向量经过旋转后,再加上向上的向量,就会组合成目标向量v rot。


image.png

这里上图打问号的部分,应该是作者搞错了。其实垂直分量的投影很容易理解,用v去点乘k,得到的是一个标量,即在k方向的投影向量的长度,为了表示这个投影向量,还需要指明它的方向,再乘以一个k单位向量即可:


image.png
然后就是求v垂直分量,这里用了向量的加法,等号两边换一下,就是v-v垂直分量。
然后就是用上面那个公式,利用v垂直分量,求出相应的v垂直分量root。(v垂直分量root,这里不方便打出公式,用文字描述有点繁琐了,就是上图中最后一行的写法……)

现在把上述结果合并后,提取公因式化简即可得到:


image.png image.png

然后就是证明如上图中方框内的两个东西是相等的,根据右手定则能看出方向是一致的。而大小呢,截图中漏写的,已经在红圈处补出来,它的值正是上面式子中的|v| sin<k,v>。

在P3中,作者推导了矩阵表示,即vrot = R v,那个矩阵R是什么?这里没细看,直接放结论了:


image.png
上一篇下一篇

猜你喜欢

热点阅读