0

所以我有 3 个 3D 向量,W、T1 和 T2,它们满足关系 W = T1*cos(theta) + T2*sin(theta)。

我需要想出一个算法,可以在给定这 3 个向量的情况下找到 theta。但是我被卡住了,甚至不知道从哪里开始。

4

2 回答 2

1

如果 T1 和 T2 不共线,则可以使用叉积:

  • W = T1*cos(theta) + T2*sin(theta)
  • [W,T1]=[T2,T1]*sin(θ)
  • [W,T2]=[T1,T2]*cos(θ)

如果它们是共线的,只需将它们投影在一条线上并求解标量方程A=B*cos(theta)+C*sin(theta)

于 2013-03-13T08:23:24.887 回答
0

使用线性代数的技术来求解 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使用反正弦或反正弦来计算 的实际值。


请注意,我没有在任何这些步骤中检查我的工作,因此我不对方程式的准确性做出任何保证。我把它留给你作为练习。

于 2013-03-13T06:39:42.217 回答