目录
旋转(rotation)
现在生活变得更加丑陋,旋转(rotation)。我这里有一个图,或者我想这也是来自四边复合幻灯片,我给你们看的是两个坐标系,a和b,你们会注意到A有一个 I 向量(如图1),一个J向量和一个K向量(如图2)。B有一个 I 向量,一个J向量和一个K向量(如图3)。
1 2 3
需要注意的一点是,这个P值(如图1),从原点(如图2)出发的向量,可以用两种方式表示。
1 2
它可以表示为a坐标系中的某些分量乘以x y z坐标系中的某些分量(如图),
也可以表示为B坐标系中的某些分量乘以x y z坐标系中的这些分量,right? 它们是相同的向量,right? 关键是要理解这些基向量(如图2)我们需要知道每个基向量的倍数。
1
2
我们想要做的是假设我们要把坐标系从A旋转到B,这就是这个公式的意思(如图1)。这就是说,给定A中描述的点(如图2),我将有一个旋转算子(如图3)它会给出现在在B坐标系中表示的P(如图4)。意味着在B的坐标系中描述框架A,它表示,所以,如果你根据A的分量给我一个点的位置,这就是应用R后它只是一个旋转,我得到了框架中的分量B。
1 2 3
4
R是什么样子的
那么R是什么样子的呢?有两种方法来考虑这个问题,首先我们要用困难的方法来考虑。表示A中的每个基向量如何用B表示(如图)。
所以的第一列(如图1)是A的 I 向量的分量用它在B的 I 方向,B的 j 方向和B的 k 方向上的分量表示(如图2)。
1 2
你可以把它想象成 和 B的每一个分量的点积,,,(如图1)。
同样的,下面每一列都是这样做的。
所以,一种思考方法是的列向量是在B坐标系中表示的A的i向量。然后是B坐标系下A的j向量,和B坐标系下A的k向量(如图)。为什么是这样是真确的呢?
我们这样想。假设我有一个点,向量,在A坐标系中。它的值是1,0,0(如图1) ,okay? 这意味着它在A坐标系的 i 方向上的距离是1在A坐标系的 j 和 k 方向上的距离是0。它的值应该是多少? all right? 我把它写下来。这个乘以这个(如图2)。
1 2
如此这般。那么它就会得到 iA 点乘 iB(如图1),所以变换后的坐标系的第一个分量就是 i 向量,在 B 的 i 方向上的量。一,二,三。还是得到iA.jB好的,再来一次iA.kB(如图2)。
1 2
换句话说,这就是它说的如果我们有一个1,0,0,需要得到的,就是这个向量是如何点乘每个分量的。这就是为什么这个矩阵可以被认为是它的列向量就像A坐标系的每一个基底向量用B坐标系表示(如图)。明白了吗? 所以两边是这个。只要按下暂停键就行了(教授show)。看看发生了什么。
提醒一下,我标记了这个旋转矩阵的列向量是坐标系B中坐标系A的坐标轴(如图),为什么? 因为我们刚刚给你们看了那些废话。
顺便说一下,它也可以被认为是行就是列(如图1),就是B向量在A坐标系中的基底,right? 这里是 iB 在A的 i 分量中,这是 iB 在 j 中,这是 iB 在 k 中(如图2),
1 2
你可以这样想,如果我转置这个向量。所以我把列变成了行,行变成了列,我现在得到的不是RAB,而是RBA,all right? 这是一个正交矩阵(如图1),right? 正交矩阵,所有的行,所有的列都是互相垂直的单位向量。所以行列式。行列式的磁体是1。这是传统的旋转矩阵顺便说一下,真正重要的是逆等于转置。所以,如果你有一个旋转矩阵你想在这两个矩阵之间来回变换,逆矩阵和转置矩阵,它们是必须的。因为RAB的逆必须是RBA我们刚刚展示了,这些行是如何被变换到列上的。
绕Z轴旋转的例子
举个简单的例子。这里有两个坐标系A到B的旋转大约是z轴。所以右边的图像,我向下看z轴。当我问你们旋转矩阵是什么时,你们应该很熟悉这个? 为什么? 因为你在代数中做过这个,right? 你说过旋转一个角度,当你做x y的时候,关于原点,希望你们还记得像这样的东西(如图)。看,cos - sin sin cos,right? 乔治·托马斯写了我们很多人都用的微积分课本,他教我微积分的时候叫我查理的妹妹,索克·查理。这样你就能记住负号在哪里了。
不管怎样,重点是这个矩阵(如图1)只是为了旋转 x 和 y,保持 z 不变。所以如果我想要得到任意的方向,基本上我可以做一系列的旋转来得到我想要的东西。
关于如何做到这一点有很多标准。我们很多人在数学和计算机视觉中都知道欧拉角。欧拉角表示,绕Z旋转,如果这是Z(教授比手势),就会旋转,假设Z是向上的,绕Z旋转,绕新的X旋转,然后再绕新的Z旋转,all right? 对于你们当中驾驶飞机的人,我认为它是头部,俯仰和滚动? 也许是船,我不知道。航向,你确定了自己的方向。你知道西北航空公司。你俯仰(教授比手势),这是向上和向下的方式,然后你滚动。这就是这个方向的旋转。all right。这是关于Z的世界,新的X,新的y,有滚动,俯仰和偏航。有方位角,仰角,我想对于你们中那些习惯发射迫击炮的人来说,方位角,el,无论如何。
基本上,有这三个基本矩阵,关于X Y z的旋转,顺序很重要,okay? 我们不用太担心,实际上根本不用担心得到那个顺序。但它是什么呢,这里有三个旋转矩阵(如图1),它们是,它们的角度的函数。这是关于x的旋转,关于z的旋转,关于y的旋转,我把它们排列成这个顺序。为什么? 我不知道它们以前是不同的顺序,但是没关系。你可以绕着这些不同的轴旋转。现在,不管你是预乘还是后乘,这都是一个问题。那么我们做x1,然后是y1和z1? 或者z1 y1 x1? 这取决于你是在新坐标系中旋转还是在旧坐标系中旋转。那么,是正的还是负的? 所以当你这样做的时候,你必须很好地考虑这些事情。这就是为什么我们在建造飞船之前先进行模拟? 因为当它在模拟中不起作用时,工程师会说,我不知道,试试 - 20。因为知道角度的方向是非常困难的。
1
齐次坐标旋转
怎么样,只是一种更简单的方法。再一次,拯救我们的,是齐次坐标。我们假设我们有一个旋转矩阵,okay。这里,我取了上面的方程,即pb是pa的旋转版本,现在,不是左上角的单位矩阵,也不是右边的偏移量,我们在这里有一个旋转矩阵(如图1),这是一个3×3矩阵。所以这是0向量(如图2)是一个3×1的0,所以转置就是0 0 0(如图3),这边是0 0 0(如图4)。okay。这样,旋转就是矩阵乘法。再一次,我们使用齐次坐标(如图5)。提醒一下,不像变换,旋转不是可交换的。
1 2
3 4
5
有编过程的人的代码,比那些无知的人使用的软件更有价值。