在圖形學座標變換中,繞軸旋轉是非常重要和常見的,例如在生成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+x^2, (e*c+u*s)*f+(-e*s+u*c)*v+x*y, (e*c+u*s)*g+(-e*s+u*c)*w+x*z;
(f*c+v*s)*e+(-f*s+v*c)*u+x*y, (f*c+v*s)*f+(-f*s+v*c)*v+y^2, (f*c+v*s)*g+(-f*s+v*c)*w+y*z;
(g*c+w*s)*e+(-g*s+w*c)*u+x*z, (g*c+w*s)*f+(-g*s+w*c)*v+y*z, (g*c+w*s)*g+(-g*s+w*c)*w+z^2]
= [x^2*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s;
x*y*(1-c)+z*s, y^2*(1-c)+c, y*z*(1-c)-x*s;
z*x*(1-c)-y*s, y*z*(1-c)+x*s, z^2*(1-c)+c]
只依賴於軸向量和旋轉角度,和曾經的那個公式相仿。
繞任意軸旋轉
關於最常見的繞座標軸旋轉,可以看看前一篇 幾何變換詳解。繞任意軸旋轉的情況比較複雜,主要分為兩種情況,一種是平行於座標軸的,一種是不平行於座標軸的,對於平行於座標軸的,我們首先將旋轉軸平移至與座標軸重合,然後進行旋轉,最後再平移回去。整個過程就是 對於不平行於座標軸的,可按如下方法處理。該方法實際上...
繞任意軸旋轉
繞任意軸旋轉 關於最常見的繞座標軸旋轉,可以看看前一篇 幾何變換詳解。繞任意軸旋轉的情況比較複雜,主要分為兩種情況,一種是平行於座標軸的,一種是不平行於座標軸的,對於平行於座標軸的,我們首先將旋轉軸平移至與座標軸重合,然後進行旋轉,最後再平移回去。整個過程就是 對於不平行於座標軸的,可按如下方法處理...
繞任意軸旋轉
關於最常見的繞座標軸旋轉,可以看看前一篇 幾何變換詳解。繞任意軸旋轉的情況比較複雜,主要分為兩種情況,一種是平行於座標軸的,一種是不平行於座標軸的,對於平行於座標軸的,我們首先將旋轉軸平移至與座標軸重合,然後進行旋轉,最後再平移回去。整個過程就是 對於不平行於座標軸的,可按如下方法處理。該方法實際上...