2013-02-01 102 views
0

想象一下以+ z方向爲中心的圓頂。我想要做的是將圓頂的中心移動到不同的軸(例如20度X軸,20度Y軸,20度Z軸)。我怎樣才能做到這一點 ?任何提示/提示都有幫助。在任意軸上旋轉圓頂?

添加更多的信息:

我一直在旋轉矩陣在維基涉足了一段時間。問題是,這不是一個交換操作。 RxRyRz與RzRyRx不同。所以基於我的多樣性,我得到了不同的最終結果。例如,我希望我的最終投影具有原始X軸20度,原始Y軸20度和原始Z軸20度。基於該矩陣,給出α,β,γ值20(或其相應的弧度)不會導致預期的旋轉。我錯過了什麼嗎?有沒有矩陣,我可以把想要的角度,並在最後得到它?

+0

你在使用? OpenGL的?的DirectX?某種3D軟件? – luiges90

+0

我正在使用Matlab。所以我想知道實施它的理論 – Louis

+0

不知道它是否適用,但你有檢查'幫助旋轉'? –

回答

0

使用rotation matrix是旋轉一組(x,y,z)點的簡單方法。您可以使用general rotation部分中的公式計算您的案例的旋轉矩陣。請注意,計算角度值以插入這些方程式可能會非常棘手。把它看作一次旋轉一個軸,記住你的旋轉次序(乘法次序)是重要的。

一般旋轉方程的替代方法是calculate a rotation matrix from axis and angle。用這種方法定義正確的參數可能會更容易。

更新:細讀維基百科後,我找到了一種簡單的方法來計算兩個向量之間的旋轉軸和角度。只需填寫您的起點和終點矢量ab這裏:

a = [0.0 0.0 1.0]; 
b = [0.5 0.5 0.0]; 
vectorMag = @(x) sqrt(sum(x.^2)); 
rotAngle = acos(dot(a,b)/(vectorMag(a) * vectorMag(b))) 
rotAxis = cross(a,b) 

rotAxis = 
    -0.5   0.5   0 
rotAngle = 
    1.5708 
+0

我一直在討論這些矩陣。問題是,這不是交換操作。 RxRyRz與RzRyRx不同。所以基於我的多樣性,我得到了不同的最終結果。例如,我希望我的最終投影具有原始X軸20度,原始Y軸20度和原始Z軸20度。基於該矩陣,給出α,β,γ值20(或其相應的弧度)不會導致預期的旋轉。我錯過了什麼嗎? 有沒有矩陣,我可以把預期的角度,我得到它的最後? – Louis