두 벡터 사이의 각도는 아래의 식으로 계산이 가능합니다.
a = acos(\frac{\vec{A}\cdot\vec{B}} {|\vec{A}||\vec{B}|}) , (0 ≤ a ≤ 180) 각도의 부호 판별
\vec{A}를 \vec{Z}에 맞추기 위해서는 a 만큼 회전을 시켜야 하고,
\vec{B}를 \vec{Z}에 맞추기 위해서는 -a만큼 회전을 시켜야 합니다.
하지만 위의 공식으로는 둘다 a은 구할 수 있지만.
각도의 부호를 판별하지는 못합니다.
각도의 부호 판별은
\vec{A}\times\vec{Z}의 값이 양의 값이면 양의 부호를 음의 값이면 음의 부호를 붙이면 됩니다.
이 공식을 이용해 2D 평면상에서 임의의 벡터의 각도를 구해보면,
X축의 각도가 0^{\circ} 이므로 X축과 \vec{A}와의 사이각을 구합니다.
부호를 판별하기 위해 X축과 \vec{A}와의 외적을 구해 그 값이 음이면 앞에서 구한 사이각에 음의 부호를 붙이면 됩니다.
a = acos(\frac{\vec{A}\cdot\vec{B}} {|\vec{A}||\vec{B}|}) , (0 ≤ a ≤ 180) 각도의 부호 판별
\vec{A}를 \vec{Z}에 맞추기 위해서는 a 만큼 회전을 시켜야 하고,
\vec{B}를 \vec{Z}에 맞추기 위해서는 -a만큼 회전을 시켜야 합니다.
하지만 위의 공식으로는 둘다 a은 구할 수 있지만.
각도의 부호를 판별하지는 못합니다.
각도의 부호 판별은
\vec{A}\times\vec{Z}의 값이 양의 값이면 양의 부호를 음의 값이면 음의 부호를 붙이면 됩니다.
이 공식을 이용해 2D 평면상에서 임의의 벡터의 각도를 구해보면,
X축의 각도가 0^{\circ} 이므로 X축과 \vec{A}와의 사이각을 구합니다.
부호를 판별하기 위해 X축과 \vec{A}와의 외적을 구해 그 값이 음이면 앞에서 구한 사이각에 음의 부호를 붙이면 됩니다.
a = acos(<X>·<A> / |X||A|) , (0 <= a <= 180) cross = <X> x <A> if cross < 0 then a = -a endif
댓글
댓글 쓰기