두 벡터 사이의 각도는 아래의 식으로 계산이 가능합니다.
$$ 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
댓글
댓글 쓰기