행렬 0x0A: 두 벡터의 코사인 각 (Cosine)
두 벡터의 코사인 각 (Cosine)Permalink
두 벡터의 코사인 각의 용도는 벡터 내적의 용도와 비슷하다. 내적의 결과는 크기가 1인 방향벡터가 아니라면 벡터 크기만큼 값이 커지는데, 대신, 두 벡터의 코사인 각을 구하면 벡터의 크기와 상관없이 [−1,1]구간을 가진다.
cos(θ)=1: 두 벡터는 동일한 방향이다. cos(θ)=0: 두 벡터는 직교한다. cos(θ)=−1: 두 벡터는 반대 방향이다.
벡터의 내적은 다음과 같다.
a⋅b=∥a∥∥b∥cosθ이를 바탕으로 코사인각에 대해 다시 정리하면
cos(θ)=∥a∥∥b∥a⋅b와 같다.
C++ 구현Permalink
template<class K, u64 N>
f32 Vector<K, N>::CosineTheta(const Vector& lhs, const Vector& rhs)
{
return Vector<K, N>::DotProduct(lhs, rhs) /
(Vector<K, N>::NormEuclidean(lhs) * Vector<K, N>::NormEuclidean(rhs));
}
Leave a comment