本文重点讨论万向节死锁是什么、为何会产生,为此,将从旋转的定义逐步出发阐明。
旋转的定义
在一个给定的三维坐标系中,围绕一个不动点的旋转可以定义为“任意点在一个旋转的前后,到不动点的距离都是不变的”。用公式的写法就是:
因为三点可以确定一个平面,所以x, f(x), p(也就是旋转前的点、旋转后的点、不动点)构成了确定了一个平面,就称其为“旋转平面”吧。而根据旋转定义,我们可以知道,x, f(x)这两个点到不动点的距离是相等的,所以x, f(x)实际上是在以不动点为圆心的一个圆上面的两点。如下图,“旋转的程度”这一概念可以用圆中的角度来定义,就称其为“旋转角”吧。
由上,我们可以发现,一个三维旋转可以用一个旋转平面、一个不动点、一个旋转方向、一个旋转角来定义,如果称旋转前的点为“原始点”,则旋转可定义为:在旋转平面上,以不动点为圆心,以不动点到原始点的距离为半径做一个圆,在该圆上以原始点为起点往旋转方向画一道弧,该弧对应的角度大小等于旋转角,则该弧的中点为旋转后的点。
旋转的代数表示
我们已经知道一个旋转在几何上可以用一个旋转平面、一个不动点、一个旋转方向、一个旋转角来定义,但是计算机要表示旋转的话,需要更加代数化的表示,最好就是向量、矩阵这类数的排列。我们一个个来看:
- 旋转平面也只是一个普通的平面而已,而任何一个平面都能用平面上的一点和垂直于该平面的法向量来定义。我们知道原始点和不动点必定在旋转平面上,所以要表示一个旋转平面用一个向量就够了。
- 不动点,就是对应的坐标数值构成的一个向量而已。
- 旋转方向,我们可以定义与上文中提到的旋转平面的法向量满足右