小记:
今天小伙伴们在调试插件接口的时候,发现,将一个物体旋转一定的角度之后,有一部分模型不对,初步的猜测是旋转之后导致了部分Geometry数据异常, 最后查出来就是因为openfl 里边的这个旋转矩阵算的不对导致了,下边仅仅用来记录下一个推到过程。
需要了解的一个小知识点:
我们在绕着坐标轴在旋转一定的角度的时候,坐标点的位置总是不断改变的,但是只会变换其中两个坐标点,还有一个点是固定不变的,这实质上就是说旋转的路径会维持在一个平面上,比如我们绕Z轴来旋转一个点, 那么该点的Z轴是不会改变的,路径会始终维持在XOY平面内,发挥你的想象力,想想,类似的绕X 轴和绕Y轴旋转具有同样的性质。
推倒:
下面我们来一起看看绕各个轴旋转的矩阵是如何推倒出来的,首先我们来看看绕Z轴旋转的推倒,简单的画出一个示意图如下:
在该图中,我们假设点(x1, y1)经过旋转β角度之后到达(x2, y2)的位置,下边我们需要推倒出这两个点之间有什么关系。
我们假设点到原点之间的距离为单位1,那么我们可以得到如下的式子:
x1 =
y1 =
x2 =
y2 =
我们知道三角函数有下面的展开:
把上边的x2 和y2的三角函数展开,然后把带有的三角函数用x1 和y1分别替换我们就可以得到下面结果:
x2 = x1 * - y1 *
y2 = y1 * + x1 *
很容易看出这个线性变换还是很容易和对应的矩阵对应起来的:
仔细看看上边的(x1, y1, z1)向量经过矩阵的线性变换之后是和上边推到出来的关系一样的,所有我们可以得到绕着Z轴旋转角度的矩阵为一下矩阵:
同样的我们可以推倒出来绕着X轴和Y轴旋转角度额矩阵分别如下:
这样子我们就得到了绕3个轴旋转角度对应的矩阵,好了本次的博客就到此为止了,仅仅只是为了自己学习和进步的脚印^_^!