행렬 0x0A: 두 벡터의 코사인 각 (Cosine)

두 벡터의 코사인 각 (Cosine)Permalink

두 벡터의 코사인 각의 용도는 벡터 내적의 용도와 비슷하다. 내적의 결과는 크기가 1인 방향벡터가 아니라면 벡터 크기만큼 값이 커지는데, 대신, 두 벡터의 코사인 각을 구하면 벡터의 크기와 상관없이 [1,1]구간을 가진다.

cos(θ)=1: 두 벡터는 동일한 방향이다. cos(θ)=0: 두 벡터는 직교한다. cos(θ)=1: 두 벡터는 반대 방향이다.

벡터의 내적은 다음과 같다.

ab=∥a∥∥bcosθ

이를 바탕으로 코사인각에 대해 다시 정리하면

cos(θ)=a∥∥bab

와 같다.

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));
}

Categories:

Updated:

Leave a comment