所以我有 3 个 3D 向量,W、T1 和 T2,它们满足关系 W = T1*cos(theta) + T2*sin(theta)。
我需要想出一个算法,可以在给定这 3 个向量的情况下找到 theta。但是我被卡住了,甚至不知道从哪里开始。
所以我有 3 个 3D 向量,W、T1 和 T2,它们满足关系 W = T1*cos(theta) + T2*sin(theta)。
我需要想出一个算法,可以在给定这 3 个向量的情况下找到 theta。但是我被卡住了,甚至不知道从哪里开始。
如果 T1 和 T2 不共线,则可以使用叉积:
如果它们是共线的,只需将它们投影在一条线上并求解标量方程A=B*cos(theta)+C*sin(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
使用反正弦或反正弦来计算 的实际值。
请注意,我没有在任何这些步骤中检查我的工作,因此我不对方程式的准确性做出任何保证。我把它留给你作为练习。