首先假定任意旋轉軸穿過原點,如果不穿過,通過平移就可以搞定。記單位向量
n為旋轉軸(單位向量方便)。旋轉角度使用
θ表示。
首先假定旋轉矩陣為r(n,θ); v表示旋轉前的向量,
v』表示v繞軸
n旋轉θ角度後的向量,那麼我們知道有
vr(n,θ) =
v』;下面就來考慮如果求r。
思路:轉化,將問題轉化到
2d座標系下進行解決。即我們在垂直於n的
2d平面內解決。
步驟:首先我們將向量
v進行分解:
vll和vt;
分別平行於
n和垂直於
n。則根據向量分解我們可知
vll+ vt
這樣分解之後再考慮這個問題就相對簡單了,因為對於平行於
n的部分,旋轉對其不會產生影響,所以只需要考慮垂直部分就
ok了。即將垂直部分旋轉到
vt』,
那麼v』 = vll
』;如下圖(盜用
d3d數學書上的圖
在這個圖中,我們首先應該知道以下幾個量的含義:
vll在向量
n上的投影。
= n(v
·n);
vt: v
在垂直於
n的平面上的投影。vt;
w是乙個臨時向量,
w同時垂直於
vll和vt;
模和vt
相同,w和vt
同時在垂直於
n的平面內。w是
vt繞n旋轉
90度的結果。可以通過
n x vt
得到。又知道
vt』 = cosθvt
θw;帶入已知量可知:
vll·n
);vt
·n);
w = n x vt
) = n x v – n x vll
則vt
』 = cos
θ(v - n(v·n)
)+sin
θ(n x v);
帶入v』 = vll
』 = (v-(v
·n)n)
cos+ (n x v)
sin+
n(v·n
);其中我們知道三個基向量可以設定為
(1,0,0),(0,1,0),(0,0,1);
令p = (1,0,0);,p』
為轉換後的基向量
則有p』 = (p-(p
·n)n)
cos+ (n x p)
sin+
n(p·n
)=( (1,0,0) –( (1,0,0)
·(nx
, ny
, nz
))(nx
, ny
, nz
))cos
+ ((nx
, ny
, nz
)x(1,0,0))
sinθ+
(nx, ny
, nz)(
(1,0,0)
·(nx
, ny
, nz
))=((1,0,0)- nx
(nx, ny
, nz
))cos
+(0, nz
, -ny
)sin+nx
(nx, ny
, nz
)= (1- nx
2, -nx
ny, -nxnz)
cos+
(0, nz
, -ny
)sin
+(nx
2, nx
ny, nxnz)
= (cos
-cosθnx
2, -nx
nycos
θ,-nx
nzcos
θ) + (0,
nzsin
θ,-ny
sinθ) +
(nx2
, nx
ny, nxnz)
= (cos
-cosθnx
22, -nx
nycos
θ+nz
sinθ+
nxny
, -nx
nzcos
θ-ny
sinθ+
nxnz
)= (nx
2(1-
cosθ
)+cosθ,
nxny
(1-cos
θ)+ nz
sinθ,nx
nz(1-
cosθ
)- ny
sinθ
);p』 =(nx
2(1-cosθ)+cosθ,
nx
ny(1-cosθ)+ nz
sinθ,
nx
nz(1-cosθ)- ny
sinθ);
同理令q=(0, 1, 0), r=(0, 0, 1);q』和r』分別是變換後的基向量
則有(nx
ny(1-cosθ)-nz
sinθ,
ny
2(1-cosθ)+cosθ,
ny
nz(1-cosθ)+nx
sinθ);
r』= (nx
nz(1-cosθ)+ny
sinθ,
ny
nz(1-cosθ)-nx
sinθ,
nz
2(1-cosθ)+cosθ);
由此可以我們需要構造的繞任意軸旋轉的矩陣就是有三個變換後的基向量組成,如下:
r(n,
,將p』,q』,r』帶入即可。
繞任意軸旋轉座標轉換公式
一、2d旋轉公式:
原點p(x,y), 旋轉角θ,旋轉後點po(xo,yo)
二、3d旋轉公式:
原點p=(x,y,z);
在3d直角座標系繞3個座標軸的旋轉角度r=(rx,ry,rz),
角度範圍(-π≤r≥π),單位:弧度;
繞實際旋轉軸的轉動角度θ
旋轉軸向量n:
p點旋轉後點po(xo,yo,zo)座標
附註:
利用「3d中繞任意軸的旋轉公式」 推導(推導略)
D3D的矩陣變換
物體座標 世界座標 視座標 投影座標 螢幕座標 這部分的說明已經不能再多了,但是有些細節其實d3d的文件中也比較難發現出來,還有些在文件中的解釋可能會讓人比較迷惑。1。視矩陣是什麼?參見 d3d的視矩陣是如何構造的 2。投影矩陣把z投影到 去了?我們在3d圖形學中學的投影矩陣是給出乙個平面,將3d空...
3D數學 學習筆記(三) 3D中繞任意軸的旋轉
本文 不要小看我們在unity或者3dmax中的乙個簡單的旋轉物體操作。題記 這裡需要用到的知識 向量運算 數量積,叉乘,加減 矩陣基本運算。讓我們匯出繞任意軸n旋轉角度 的矩陣。即 vr n.v 只要能用v,n,表示出v 即可,然後再求出基向量。方法如下 看圖 說明 1.向量n是單位向量 2.vi...
3D數學筆記 任意軸旋轉
題記 公式 v v n n v v n n cos sin u x v 表示三維空間旋轉的方法有很多,這裡關注軸角式,並採用右手座標系 如圖 有旋轉軸 u x y z 我們希望向量v,沿著這個旋轉軸旋轉 度,變換到v 我們來變換一下v 1.旋轉的分解 首先,我們可以將v分解為平行於旋轉軸u以及正交與...