내일배움캠프_Unity_6기/TIL(Today I Learend)
TIL : 2024-10-17(목) :: 벡터의 내적(Vector2.Dot)
BirdHead
2024. 10. 17. 23:33
벡터의 내적은 두 벡터사이의 각도를 알아낼때 주로 사용한다.
그렇다고 내적을 해서 나온값이 두 벡터사이의 각도값이 아니다.
벡터의 내적은 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;
}
}
이것으로 해당 벡터의 각도 값을 알아 낼 수 있다.