벡터의 내적과 벡터의 외적
벡터 내적
벡터 A와 벡터 B의 내적의 공식
AㆍB = |A| |B| cosθ
A내적B = 벡터A크기 * 벡터B크기 * cosθ
cosθ = A내적B / A크기 / B크기
θ = Arccos(A내적B / A크기 / B크기)
θ는 AB 사이의 각
유니티로 표현하면
Vector3.Dot(A,B) = Vector3.Magnitude(A) * Vector3.Magnitude(B) * Mathf.Cos(θ)
Mathf.Cos(θ) = Vector3.Dot(A,B) / Vector3.Magnitude(A) / Vector3.Magnitude(B)
θ = Mathf.Acos(Vector3.Dot(A,B) / Vector3.Magnitude(A) / Vector3.Magnitude(B))
내적 > 0 , θ< 90
내적 < 0 , θ> 90
내적 = 0 , θ= 90
Cosθ의 성질은 0<= θ <= 180 범위내에서 θ가 커질수록 cosθ는 작아지고 θ작아질수록 cosθ는 커진다
이 성질을 이용해
AㆍB > cosθ 인경우 B벡터는 A벡터를 기준으로 양옆으로 θ각도 사이에 들어와있음을 알 수 있다.
부채꼴의 선(벡터)과 점과의거리
직선을 벡터AB와 점을 P라할때 벡터AB와 벡터AP의 외적 = 선분AB의 길이 * 선분 AB와 점 P의 거리
선분 AB와 점 P의거리 = 벡터 AB와 AP의 외적의크기/선분 AB의 길이
벡터 외적
//오른손 좌표계
타겟벡터와 중심벡터의 외적의 y값이 0보다 큼 = 타겟이 중심기준 왼쪽에 위치
타겟벡터와 중심벡터의 외적의 y값이 0보다 작음 = 타겟이 중심기준 오른쪽에 위치
//왼손좌표계 (게임엔진은 주로 왼손좌표계따른다, 유니티도 동일)
타겟벡터와 중심벡터의 외적의 y값이 0보다 큼 = 타겟이 중심기준 오른쪽에 위치
타겟벡터와 중심벡터의 외적의 y값이 0보다 작음 = 타겟이 중심기준 왼쪽에 위치
유니티로 표현시
Vector3.Cross(중심벡터, 방향벡터) >0 = 오른쪽
Vector3.Cross(중심벡터, 방향벡터) <0 = 왼쪽
오른손 좌표계와 동일하게 하고싶으면 중심벡터와 방향벡터의 순서를바꾸면된다.
Reference