2013-03-13 4 views
0

W = T1 * cos (theta) + T2 * sin (theta)의 관계를 만족하는 3 개의 3D 벡터, W, T1 및 T2가 있습니다.각도를 찾기위한 코드

나는이 세 가지 벡터가 주어진 쎄타를 찾을 수있는 알고리즘을 생각해 내야합니다. 그러나 나는 붙어있어 어디에서 시작해야할지 모른다.

+0

ck : T1과 T2 사이의 각도에 대한 사전 정보가 없습니까? (예 : "항상 직각"과 같은) – maxim1000

답변

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에 대해 해결할 수 있습니다. 알다시피 우리는 arccosine 또는 arcsine을 사용하여 theta의 실제 값을 계산할 수 있습니다. 나는 다음 단계 중 하나에 내 작품을 선택하지 않은, 그래서 방정식의 정확성에 대한 보장을하지 않는 것이


참고. 나는 그것을 당신을위한 운동으로 남겨 둡니다.

1

T1 및 T2는 동일 선상에없는 경우, 외적 사용할 수

  • W = T1 * COS (세타) + T2 *이 죄 (세타)
  • [W, T1 = [T2를 , T1 * 죄 (세타)
  • [T2] = [T1, T2] * COS (세타)

들이 동일 선상에있는 경우, 단지 행에서 투영 및 스칼라 방정식의 W A=B*cos(theta)+C*sin(theta)

관련 문제