2014-02-28 45 views
5

image
計算矢量由角在三維空間中旋轉它朝向另一個θ後

單元上的3D空間中的向量V和d謊言。他們有相同的起點。我想旋轉向量V到向量D,但只能旋轉角度θ。

既然我們知道:

  1. 矢量V和d是單位向量。
  2. 我們知道V(x,y,z)和D(x,y,z)。
  3. 我們知道兩個矢量V和D之間的夾角Δφ。
  4. 我們還知道角度θ,其中矢量V將旋轉到接近矢量D.
  5. 我們知道三個矢量從哪裏開始的起點「O」。

我們現在想計算向量Z,它也是一個單位向量。 有沒有可能使用上面給出的這些信息來計算向量Z的座標?

你有什麼想法如何解決這個問題?

+0

一個小問題:有向量,沒有「起點」,所以不相關。也許你正在考慮一個線段,它既有起點又有終點。 –

+0

除了@comingstorm提出的解決方案外,另一種選擇是使用[quaternions](http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation),特別是如果您想將相同的旋轉應用於多個矢量。 – salva

回答

5

您需要做的是在V和D矢量的平面中定義第三根軸,使得V指向該方向90度旋轉。我將調用指向這個方向的單位向量D'。有了這個,你的Z向量很容易:

Z = cos(theta)*V + sin(theta)*D_tick; 

那麼如何計算D'?這很容易。首先使用叉積計算與V和D正交的向量。稱這個W:W = V×D。接下來計算與W和V正交的矢量:D'= W×V =(V×D)×V。這指向正確的方向,但如果你的V和D是正交的,它將只是一個單位向量。因此規範化:D'= D'/ || D'||,其中|| D'||是矢量D'的大小。如果你有一個矢量數學軟件包,你可以通過

D_tick = ((V.cross(D)).cross(V)).normalize(); 

一個告誡:如果|| D'||是零?當且僅當您的Δφ是pi弧度(或180度)的倍數時纔會發生這種情況。或者,當V和D彼此平行或反平行時發生。你的問題在這個特殊情況下是不適當的。你應該檢查這個特殊情況。



補遺
我(V×d)×V和comingstorm的d - V *((d·V)/(V·V))是一個且相同的對三維空間中的向量。因爲V是單位矢量,所以他的D-V *((D·V)/(V·V))降低到D-V(D·V)。我的(V×D)×V等於每個向量三元產品標識(http://mathworld.wolfram.com/VectorTripleProduct.html)的D(V·V)-V(D·V),並且這又減少到DV(D·V),因爲V是單位矢量。要做到這一點

+0

我想你需要用'length(V)'縮放'D_tick'來獲得正確的旋轉。 – comingstorm

+0

@comingstorm - 根據定義,長度(V)是1。 V是單位矢量。 –

+0

哎呀,你可以仔細閱讀這個問題... – comingstorm

1

載體Qcross productV×d給出。兩個3D向量的叉積總是垂直於叉積的兩個參數。這將是旋轉軸。在你的情況,Q由下式給出:

Qx = VyDz - VzDy 
Qy = VzDx - VxDz 
Qz = VxDy - VyDx 

注意V×d = - d×V所以有可能是一個跡象的問題。另外,Q通常不是經常需要旋轉的單位矢量,所以一定要將其除以其大小並且使用Q'= Q/| Q | (Q≠0),然後將其用作旋轉軸。

+1

謝謝!這似乎很有幫助,但Z在我的情況下,Z是我想旋轉垂直的矢量!我們稱之爲垂直Q.之後,我應該將角度θ的矢量V圍繞Q旋轉,是嗎? – Vortakis

+0

好吧...我原本看不到你的照片;我已更新以反映這一點。是的,那是對的。 – andand

+0

非常感謝!你不知道我現在感到如​​何的放鬆! – Vortakis

4

的一種方式是找到的D垂直於V組件,其放大到等效長度,並且使用sin()cos()做一個矢量之和:

D_perp = D - V * ((D . V)/(V . V)) 

D_perp_scaled = D_perp * (|V|/|D_perp|) 

result = cos(theta) * V + sin(theta) * D_perp_scaled 

除非這是明確定義的D平行於V,這將使|D_perp| == 0並導致部門的問題。這並不令人驚訝:在這種情況下,你的旋轉飛機是不明確的 - 不清楚你應該旋轉的方向!

在數學上,這種找到垂線的方法等價於其他答案中提到的交叉乘積方法cross(cross(V,D),V),但可能稍微簡單一些,適用於任何向量空間(例如2-D和4-D矢量,而不僅僅是3-D)。

相關問題