在图形学坐标变换中,绕轴旋转是非常重要和常见的,例如在生成Camera和World的变换关系时广泛使用。
以前曾得到过这个变换公式,但已经忘了是如何导出的,甚或是直接抄来的。现在索性重新推导一遍。
设轴的矢量为[x, y, z]
为构成右手系A系,需要补充两个正交向量:
[e, f, g]
[u, v, w]
根据右手系,有以下关系:
u = y*g-z*f
v = z*e-x*g
w = x*f-y*e
e = v*z-w*y
f = w*x-u*z
g = u*y-v*x
x = f*w-g*v
y = g*u-e*w
z = e*v-f*u
由A系到原坐标系的坐标变换矩阵是:
A = [e, u, x;
f, v, y;
g, w, z]
矢量旋转坐标变换矩阵是:
R = [c, -s, 0;
s, c, 0;
0, 0, 1]
于是总的绕轴旋转矩阵是:
T = A * R * A'
= [(e*c+u*s)*e+(-e*s+u*c)*u