IT공부

[Unity] 벡터의 내적(Dot Product)

shine94 2025. 7. 3. 15:11

https://www.youtube.com/watch?v=4-76jesTq2I

 

 

 

 

* 이 블로그는 두 벡터가 모두 정규화(normalized)된 경우, 즉 길이가 1인 단위 벡터일 때의 내적 결과를 기준으로 한다
   ㄴ 일반적인 벡터끼리의 내적은 a · b = |a| * |b| * cos(θ)이다
   ㄴ 따라서 벡터 길이가 1일 때만 내적 값이 -1 ~ 1 사이가 된다

 

* 벡터의 내적(Dot Product)

   두 방향 벡터가 얼마나 같은 방향을 향하고 있는지를 숫자로 표현해주는 도구이다

   두 벡터가 같은 방향일 수록 1에 가까워지고, 반대일수록 -1에 가까워진다

 

각도(θ) 내적 값(dot) 방향 관계 설명
1.0 완전히 같은 방향
90° 0.0 수직(측면)
180° -1.0 완전히 반대 방향

 

* 내적은 벡터의 길이가 아닌, 두 방향이 얼마나 유사한지를 수치로 판단하는 도구임을 명심하자!!

 

   [예를 들어, 거리를 구하고 싶다면]

   두 위치 백터의 차를 구하면, 방향 벡터를 얻을 수 있다

   (이 벡터는 거리와 방향 정보를 모두 포함하고 있다)

 

   구한 거리의 벡터의 크기(magnitude)를 구하면 두 위치 간의 실제 거리이고,

   구한 거리의 벡터를 정규화(normalized vector)하면 방향만 남긴 단위 벡터가 된다

 

* transform.forward

   길이가 1인 단위 벡터(normalized vector)

 

* magnitude는 항상 양수이고, 방향은 부호를 가진다

 

* 실제 사용 예제

Vector3 toTarget = (target.position - transform.position).normalized;
float dot = Vector3.Dot(transform.forward, toTarget);
if (dot > 0.7f)
    Debug.Log("바라보고 있음");