想要弄懂矩阵旋转,需要先弄明白几何中旋转是怎么计算的。
1. 平面几何点的旋转计算
1.1 数学计算
高中的数学知识,求两角差公式:
由p(x,y)点旋转到p'(x',y')点,如何计算旋转后点的位置呢?
1.1 通过上面我们可以获取到基础的信息:
在坐标系中,p点原始角是å,旋转了ø角,那么旋转后的角度是å-ø, 既可以得到:
// 原始点的坐标
x = r*cos(α);
y = r*sin(α);
// 旋转之后点的坐标
x'= r*cos(α-ø)
y'= r*sin(α-ø)
1.2 根据高中的两角差公式进行,变换,得到如下:
x'= r*cos(α-ø) = r*cosαcosø+r*sinαsinø
y'= r*sin(α-ø) = r*sinαcosø-r*cosαsinø
// 由于我们知道原始点的坐标是
x = r*cos(α);
y = r*sin(α);
// 等价于
x'= r*cos(α-ø) = r*cosαcosø+r*sinαsinø = xcosβ + ysinβ
y'= r*sin(α-ø) = r*sinαcosø-r*cosαsinø = xcosβ - ysinβ
1.2 两角差,两角和公式证明
由于很多人已经忘记了两角差,两角和公式的证明,这里我进行补充一下,方便大家理解,不用在去找资料复习:
两角和:
如图所示:
矩形的长边: sin(α+β)=sinαcosβ+cosαsinβ 矩形的短边: cos(α+β)=cosαsinβ-sinαsinβ
两角差:
如图所示:
矩形的长边: cos(α-β)=cosαcosβ+sinαsinβ 矩形的短边: sin(α-β)=sinαcosβ-cosαsinβ
2. 平面几何和矩阵的关系
根据平面几何我们得到的关系;
x'= xcosβ + ysinβ
y'= xcosβ - ysinβ
2.1 矩阵的乘法计算的方式:
我们根据矩阵乘法的计算方式可以得出:
注意:最后一行的 [0,0,1] 的坐标让人很疑惑,不知道是干嘛的。其实他在数学中的专有名词叫做齐次坐标,是为了方便计算使用的。这里不展开讲。后面会单独用一篇文章讲解什么是“齐次坐标”。
3. 个人理解
很多人不太理解矩阵有什么作用,这里我跟大家分享一下我的想法。
我们在高中学数学的时候,有一章专门是学习立体几何,我们学习的解法是做辅助线,将其转换成平面几何后在进行计算。这样不仅仅需要丰富的想象力,而且还需求大量的计算,十分容易出错。这也是为啥高考最后一题一般都是立体几何的题目的原因之一。
而矩阵相当于提供了另外一种解题的思路,即使我们不需要想象力,和计算能力也可以把题目给做出来。感觉算是对高中解题思路的一种降维打击。