写这篇日志有两个目的:一来是想测试新装上去的LaTeX插件显示数学公式是否好用(不过貌似通过RSS获取到的日志是没有办法显示的……);二来是对于三维向量绕任意轴的旋转之前我都是用结论的,今天因为做计算机图形学的作业去推导了一下,发现计算量相当大,算了我一个早上,故特以此日志留念。
言归正传,首先我们讨论二维向量的旋转。
对于一个向量OP(x, y),我们如何得知其绕原点O,沿逆时针方向(注意,以下所说的旋转均指逆时针方向,并且对于三维的情况我们假定坐标系都是符合右手定则的)旋转θ后的向量OP'(x', y')呢?
我们采取参数方程进行推导。设向量OP的长度为r,其辐角为φ,则其可表示为OP(r cos(φ), r sin(φ)),这样其旋转θ后的向量就可表示为OP'(r cos(φ + θ), r sin(φ + θ)),由三角函数的合角公式即可得到OP'(x cos(θ) - y sin(θ), x sin(θ) + y cos(θ))。
我们知道,几何中的变换是可以用线性代数中的矩阵进行描述的,上述旋转变换如果用矩阵描述便如下所示:
[cosθsinθ−sinθcosθ]⋅[xy]=[xcosθ−ysinθxsinθ+ycosθ]
好,现在我们已经知道如何进行二维向量的旋转了,那么我们开始讨论三维向量的旋转。
与二维向量不同,三维向量的旋转必须首先确定转动轴。那么首先来看三种特殊情况:绕x轴旋转、绕y轴旋转、绕z轴旋转。
注意到这三种特殊情况和二维情况是类似的,因为向量总在某个坐标平面内进行旋转,因此我们可以很容易地把前面那个矩阵