我有兩個標準化向量: A)0,0,-1 B)0.559055,0.503937,0.653543如何計算從一個矢量旋轉到另一個矢量所需的角度?
我想知道,它會採取什麼樣的旋轉繞軸採取矢量爲(0,0) ,-1到0.559055,0.503937,0.653543?
我該如何計算?類似的,旋轉X軸40度和Y軸220(這只是一個例子,但我不知道該怎麼做)。
我有兩個標準化向量: A)0,0,-1 B)0.559055,0.503937,0.653543如何計算從一個矢量旋轉到另一個矢量所需的角度?
我想知道,它會採取什麼樣的旋轉繞軸採取矢量爲(0,0) ,-1到0.559055,0.503937,0.653543?
我該如何計算?類似的,旋轉X軸40度和Y軸220(這只是一個例子,但我不知道該怎麼做)。
檢查this了。 (谷歌是件好事)
這將計算兩個向量之間的角度。 如果向量A是(AX,AY,AZ)和
矢量B是(BX,BY,BZ),然後
它們之間角度的cos爲:
(ax*bx + ay*by + az*bz)
--------------------------------------------------------
sqrt(ax*ax + ay*ay + az*az) * sqrt(bx*bx + by*by + bz*bz)
爲了計算角度投影到xy平面上的兩個矢量之間,只需忽略z座標。
角的餘弦在x-y平面=
(ax*bx + ay*by)
--------------------------------------
sqrt(ax*ax + ay*ay) * sqrt(bx*bx + by*by
同樣,計算在x-z平面的兩個向量的投影之間的角度,忽略的y座標。
這聽起來像你想從笛卡爾座標(X,Y,Z)到球面座標(RHO,θ,PSI)轉換。
因爲它們都是單位向量,所以rho的半徑將爲1.這意味着您的大小也將爲1,您可以跳過整個分母並僅使用點積。
在X/Y平面(繞Z軸)旋轉將是你的第一個例子很困難的(0,0,-1),因爲它在X或Y沒有擴展名所以沒有什麼旋轉。 (0,0,-1)與(1,0,0)或(0,1,0)成90度。如果取x軸成爲2θ位置的0角,則通過在施加逆餘弦計算披(旋轉關閉X/Y平面的)(X,Y,Z)和( x,y,0),然後你可以跳過點積,並用atan2(y,x)得到theta(x/y旋轉)。
當心gimbal lock這可能引起問題。
得到一個角度。我不知道這是什麼意思?我想要在x,y旋轉上的角度,它會使我從0,0,-1到0.559055,0.503937,0.653543。我從中獲得了一個角度,我該怎麼處理它? – 2013-04-06 21:30:07
這會計算角度,你用它來做什麼取決於你...你計算的是什麼?你想把這個角度分成兩個部分嗎? – 2013-04-06 21:35:35
這並不能告訴我如何從3D中獲得0,0,-1到0.559055,0.503937,0.653543(3個角度)。它接近130度,但不是在X,Y和Z軸上旋轉。 – 2013-04-06 21:35:52