벡터의 내적과 외적을 어느 상황에 사용할 수 있는지 설명해주세요.
내적
- 내적은 한 점에서 다른 점으로 선을 그었을 때, 방향을 구하는 데에 자주 활용됨
- 두 벡터의 요소를 곱해 나온 값을 더해 구할 수 있음
A ⋅ B 형태로 쓰며 스칼라 값을 반환
A ⋅ B = |A| |B| cosθ 가 성립하는 점을 이용해 cosθ를 구하는데 활용 가능
- 두 벡터에 대한 내적의 반환 값이 양수일 경우 0~90도 사이, 0 이면 수직, 음수면 90~180도 사이에 위치한 것임
Ex) IK 에서 한 점에서 다른 점으로 향하는 각도를 구함
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//mousePos로 향하는 벡터
dir = mousePos - point;
// dir의 크기가 0이 아닌지 확인
if (dir.magnitude > 0)
{
angle = Mathf.Acos((mousePos.x - point.x) / dir.magnitude) * (180 / Mathf.PI);
if (mousePos.y < point.y)
{
angle *= -1;
}
}
cosθ = (A ⋅ B) / (|A| |B|) 내적의 정의에서 파생된 원리를 활용
외적
- 두 벡터를 연산해 벡터를 반환함
|A × B| = |A| |B| sinθ를 성립하는 특성을 가짐
- 두 벡터를 통해 만들어지는 평면에 수직인 벡터를 구할 수 있음
- 이를 통해 해당 벡터의 방향이 카메라를 향하는지, 혹은 반대방향을 향하는지에 따라 메쉬의 앞, 뒤를 구분할 수 있음