벡터 내적의 직관적 의미
벡터의 대수적 의미는 A (x1, y1, z1)와 B (x2, y2, z2)처럼 어떤 집합인데
내적은 이 집합 간 원소의 곱의 합으로 스칼라 값을 출력하는 연산이다.
A⋅B = (x1x2 + y1y2 + z1z2)
우리가 행렬을 곱할 때도 내적을 하고 있다고 생각할 수 있고
삼각형 대각선의 길이를 구하는것도 내적이라고 볼 수 있다.
이런 대수적 의미를 기하학적으로도 나타낼 수 있다.
A⋅B = |A| |B| cosθ
(대수적 의미와 기하학적 의미가 같음을 증명 : sonagi87174.tistory.com/18)
여기서부터 게임 프로그래밍에서 자주 쓰는 내적의 의미가 등장한다.
공식 A⋅B = |A| |B| cosθ 에서 |B|를 이항한 |A| cosθ 는 백터 A가 벡터B에 투영된 길이이다.
흔히 설명할때 벡터 B와 수직한 곳에서 햇빛이 비출 때 A의 그림자의 길이라고 하기도 한다.
만약 벡터 B가 처음부터 길이가 1인 단위벡터였다면 내적 A⋅B가 바로 그림자의 길이가 된다.
또한 내적의 결과에 범위가 (-1 ~ 1) 인 cosθ 가 들어가는 점을 이용해서 두 벡터가 이루는 각의 관계:
양수면 예각, 0이면 수직, 음수면 둔각임을 알아낼 수 있다.
만약 |A| |B| 가 둘다 1이라면 내적 A⋅B = cosθ 만 남게되어 정확한 (-1~1) 범위로 몬스터의 시야각에 내가 보이는지 체크할 수 있게된다. (먼저 음수, 양수를 판별하고 양수일 때만 정규화 하여 정확한 판별을 하면 비용이 적게 들 것이다.)
마지막으로 만약 주어진 두 벡터가 이루는 실제 각을 알고 싶다면 cosθ = A⋅B / (|A| |B|) 이므로
역함수 arccos를 사용하면 컴퓨터가 편리하게 각을 구해다 줄 것이다.
결과적으로 보면 내적의 연산인 곱셈 몇번과 덧셈 몇번으로 많은 정보를 알 수 있는 것이다.
'프로그래밍 > 물리, 수학, 3D' 카테고리의 다른 글
Fix Your Timestep 번역 (0) | 2018.06.17 |
---|---|
integration basics 번역 (0) | 2018.06.17 |