所以我有3個3D向量,W,T1和T2滿足W = T1 *cosθ+ T2 *sinθ的關係。找到一個角度theta的代碼
我需要想出一個算法,可以找到給定這3個向量的theta。然而,我卡住了,甚至不知道從哪裏開始。
所以我有3個3D向量,W,T1和T2滿足W = T1 *cosθ+ T2 *sinθ的關係。找到一個角度theta的代碼
我需要想出一個算法,可以找到給定這3個向量的theta。然而,我卡住了,甚至不知道從哪裏開始。
使用線性代數的技巧來解決cos(theta)和sin(theta)的可能性。
[ T1_1 | T2_1 | W_1 ]
[ T1_2 | T2_2 | W_2 ]
[ 1 | T2_1/T1_1 | W_1/T1_1 ]
[ T1_2 | T2_2 | W2 ]
[ 1 | T2_1/T1_1 | W_1/T1_1 ]
[ 0 | T2_2 - T1_2 * T2_1/T1_1 | W2 - T1_2 * W_1/T1_1 ]
[ 1 | T2_1/T1_1 | W_1/T1_1 ]
[ 0 | 1 | (W2 - T1_2 * W_1/T1_1)/(T2_2 - T1_2 * T2_1/T1_1) ]
[ 1 | 0 | W_1/T1_1 - T2_1/T1_1 * (W2 - T1_2 * W_1/T1_1)/(T2_2 - T1_2 * T2_1/T1_1) ]
[ 0 | 1 | (W2 - T1_2 * W_1/T1_1)/(T2_2 - T1_2 * T2_1/T1_1) ]
所以,
cos(theta) = alpha * W_1/T1_1 - T2_1/T1_1 * (W2 - T1_2 * W_1/T1_1)/(T2_2 - T1_2 * T2_1/T1_1)
sin(theta) = alpha * (W2 - T1_2 * W_1/T1_1)/(T2_2 - T1_2 * T2_1/T1_1)
我們知道,
cos(theta)^2 + sin(theta)^2 = 1
堵前面的方程cos(theta)
和sin(theta)
成最後一個等式,我們可以解決alpha
。知道這一點,我們可以使用反餘弦或反正弦來計算theta
的實際值。
請注意,我沒有在這些步驟中檢查我的工作,所以我不對任何方程的準確性作任何保證。我把它作爲你的鍛鍊。
如果T1和T2是不共線,則可以使用叉積:
如果它們是共線的,只是突出他們位於一行,並且解決標量方程A=B*cos(theta)+C*sin(theta)
Just to che ck:T1和T2之間沒有關於角度的先前信息? (比如「他們總是正交的」) – maxim1000 2013-03-13 08:25:03