벡터의 내적은 두 벡터사이의 각도를 알아낼때 주로 사용한다.

그렇다고 내적을 해서 나온값이 두 벡터사이의 각도값이 아니다. 

 

이미지 출처 : https://moondongjun.tistory.com/129

벡터의 내적은 Dot Product라고도 불리며 두 벡터의 곱으로 스칼라 값을 가져올수 있고

해당 스칼라값을 ACos(theta)에 사용하면 두벡터의 사이각을 가져올 수있다.

 

Vector2.Dot()를 활용해보기 위해 간단한 예제 코드이다. 

using UnityEngine;

public class VectorAngle : MonoBehaviour
{
    public Vector2 v1 = new Vector2(1, 0);
    public Vector2 v2 = new Vector2(0, 1);

    void Start()
    {
        
        float dotProduct = Vector2.Dot(v1, v2);

        // .magnitude : 해당 벡터의 스칼라값(크기)를 반환함
        float magnitude1 = v1.magnitude;
        float magnitude2 = v2.magnitude;

        // dot내적값 = A크기 * B크기 * Cos(세타)
        // Cos(세타) = dot 내적값 / A크기 * B크기 로 식변환
        float cosAngle = dotProduct / (magnitude1 * magnitude2);

        // 구한 각도값을 이용하여 Acos에 넣고 사용 
        float angleInRadians = Mathf.Acos(cosAngle);
        //라다안으로 반환하기에 Rad2Deg 사용
        float angleInDegrees = angleInRadians * Mathf.Rad2Deg;

        
    }
}

이것으로 해당 벡터의 각도 값을 알아 낼 수 있다. 

+ Recent posts