旋转矩阵推导

一、前言:
周而复始的搜索、循环往复的记忆,但终究还是不深刻,不能像老师一样交给一个新人,所谓提纲挈领,名师指导还是相当有必要的,因为所有的坎,名师都遇到过,而且总结了自己的一套方法论。这样才能够言简意赅,才能够让一个什么都不懂(有点夸张),略等一些技术背景的人,很容易的就能够理解并且掌握。闲言少叙,下面来看下矩阵变换中的旋转矩阵的推导是怎么推导出来的。本文并不涉及为什么使用四维矩阵表示三维向量的旋转,这些知识将在后面的文章中一一涉及,有兴趣的或者锱铢必较(这里作褒义会意)的读者请关注博主接下来的学习历程。
二、推导过程
2.1二维向量的旋转
旋转矩阵推导_第1张图片

2.2三维向量的旋转
二维扩展到三维,其实还是蛮简单的,我们不妨将上面的图,再修改下,就可以得到如下图:
旋转矩阵推导_第2张图片
正如你看到的,添加了一个+z,就变成了三维空间了。上面将OP顺时针绕着z轴旋转了θ角度。这里我们要注意两点:
(1)我们站在xy平面,朝着z轴的正方向看,我们挥舞着手臂,从OP转动θ角度到达了OP’,这里是顺时针沿着z轴旋转了θ角度。
(2)搞清楚坐标系是左手坐标系还是右手坐标系,为什么要搞清楚这个呢?因为为了接下来的同理推导,哈哈为了省事。

2.3如何确定是左手坐标系,还是右手坐标系。
这个问题,我的习惯是用手指模拟。伸出一只手,大拇指是x轴正方向、食指是y轴正方向、中指是z轴正方向。哪只手这样做之后能和坐标轴重合,那只手就是左/右坐标系。如下图所示,可以确定此坐标系为左手坐标系:
旋转矩阵推导_第3张图片

2.4绕z轴旋转θ角度的矩阵表示
旋转矩阵推导_第4张图片
好事之徒,这里就会问,哎?这里z’经过矩阵变换之后,z轴结果没有变化,对呀为啥没有变化呢?你觉得会有变化吗?可以这么理解。
旋转矩阵推导_第5张图片
我们绕着z轴旋转,其实即使向量的在圆锥体上的移动,但是投射到z上的坐标是固定长度的,也可看出,绕某个轴旋转,其实这个点或者是向量的某轴坐标不变。例如,绕x轴旋转,则x轴的坐标不变;绕y轴旋转,y轴坐标不变;绕z轴旋转则z轴不变。

2.5绕x轴、y轴旋转θ角度的矩阵表示
我们此时要做的就是转换坐标轴的位置,使其和我们上面的绕z轴推导进行硬套公式即可。如下所示,我们首先,记住首先,就是讲x轴方针原来z轴的位置。
旋转矩阵推导_第6张图片
此时到底是(一)还是(二)呢?回顾我们之前写的一句话,就是该坐标系是左手坐标系还是右手坐标系。经过验证(一)是左手坐标系;(二)是右手坐标系。又因为我们之前的坐标系是左手坐标系,所以这里选择(一)。
ok此时,我们有了坐标系,我们只要把对应的变量替换上去即可。如下图所示:
旋转矩阵推导_第7张图片
推导如下:
旋转矩阵推导_第8张图片
至此,我们完成了绕x、y、z三个轴旋转的矩阵推导过程。

你可能感兴趣的:(Unity)