수학/게임수학
내적의 응용 - 삼각형을 통해 추론하기
cyphen156
2025. 5. 9. 19:31
어제 스터디 그룹에서 내적에 대해 리뷰를 하였는데, 나 스스로도 내적에 대해 다시 정리하다 보니 투영에 대한 설명이 부족했던 것 같아서 추가로 글을 쓴다.
벡터의 내적 연산은 여러가지 이점을 준다.
- 이 개념을 이해하기 위해 먼저, 관찰자(나)의 시점을 원점으로 설정하는 전제가 필요하다.
'나'를 원점으로 삼아서 어떠한 물체가 나로부터 얼마나 떨어져있는지, 그 거리를 측정한다면
그것은 원점에서 물체 까지의 거리벡터라 볼 수 있다. - 내가 바라보고 있는 시선 방향으로 부터 뻗어 나가는 벡터를 시선 벡터라 지칭하고,
시선 벡터는 방향성만이 중요하기 때문에 항상 정규화된 단위 벡터로 표현한다.
이렇게 두개의 벡터를 알아냈다면, 두 벡터의 내적 연산을 진행할 수 있다.
물체의 위치 판별
내가 바라보고 있는 시선과 어떤 물체까지의 거리 벡터를 내적한 결과에 대해,
크기를 제거하고 부호만 남긴다면
물체가 나를 기준으로 앞에 있는지, 뒤에 있는지 판단이 가능하다.
투영거리 도출
이제 부호와 함께 스칼라 크기를 사용하게 된다.
두 벡터의 내적을 통해 물체가 나보다 앞에 있는지, 뒤에 있는지를 판단 했으니, 그 크기를 사용한다면 투영 거리를 구할 수 있다.
여기서 삼각비를 사용한 투영 거리를 구하는 방식을 유도해 본다면
- 우리가 알고 있는 정보는 현재 정규화된 시야 벡터, 물체까지의 거리벡터 두 가지이다.
- 그런데 거리벡터와 시야 벡터를 내적한다면 그 결과는 항상 Cos함수에 비례 한다.
- 시각적, 연산의 편의를 위해 거리 벡터 또한 정규화하여 시야 벡터와 내적한다면 Cosθ를 구할 수 있고, 이것을 통해 두 변사이의 끼인 각을 알아낼 수 있다.
- 이제 두 변과 두 변 사이의 끼인각을 찾아 냈으니 직각삼각형을 구성할 수 있다.
- 직각삼각형은 피타고라스의 정리에 의해 항상 같은 비율을 유지한다.
- 3)에서 θ를 구하기 위해 정규화를 진행했으니, 원본 거리 벡터를 한변으로 갖는 삼각형을 구하기 위해 반정규화를 진행한다.
여기서 반 정규화가 진행될 수 있는 이유는 정규화 과정이 사실 스칼라 곱을 통해 이루어 지기 때문에 어떠한 연산을 수행했다면 그 원본을 보장하기 위해 반드시 반대 항에도 같은 연산을 수행해 줘야 한다는 법칙과 벡터와 스칼라의 곱은 항상 결합 법칙, 분배 법칙, 그리고 교환 법칙이 성립한다는 공리에 의거한다. - 거리 벡터를 반정규화를 통해 원본을 복구했다면 삼각비에 의해 시선벡터 또한 반정규화를 진행할 시 같은 비율로 시야벡터를 늘릴 수 있다. 그리고 이것에 의해 늘어난 시야 벡터의 크기는 두 벡터(거리 벡터와 시선 벡터)의 내적의 절댓값 된다.
- 정규화/반정규화 과정은 스칼라와 벡터, 스칼라와 스칼라의 곱셈 연산에 해당한다. -> 결합 법칙, 분배 법칙, 그리고 교환 법칙이 성립 공리에 의해 정규화/반정규화 과정은 같은 값으로 나눳다가 곱하는 것으로 볼 수 있고, 이 연산은 교환법칙에 의해 압축되어 1이라는 하나의 스칼라를 형성한다.
- 그렇기 때문에 정규화/반정규화의 과정은 생략할 수 있다.
결론 : 두 벡터의 내적 연산은 투영거리를 구하는 연산이다.
물체의 현재 위치의 시야각 내부/외부 판별
앞서 투영거리를 구할 수 있음을 학습했고, 내적의 결과가 Cos함수에 비례하는 결과를 갖는다는 사실을 알 수 있었다.
그렇다면 앞 뒤 판별에 사용되었던 직교성 판단 범위를 축소하여 내적의 결과 범위를 일부 범위로 제한한다면 물체가 시야안에 존재하는지 아닌지를 판단 할 수 있다.