오늘 다룰 내용은 벡터의 정사영입니다.
이 부분에 대해서 다루는 이유는 이후 다룰 주제인 obb 충돌처리를 이해하기 위해 필요한 부분이기에
사전에 설명을 해두려고 합니다.
정사영을 쉽게 이야기하자면 그림자입니다.
벡터가 평면 위에 있을때 평면에 수직으로 빛을 쏘아서 그 벡터가 만드는 그림자를 정사영이라고 합니다.
그렇다면 저 정사영에 대한 정보는 어떻게 구해야할까요.
정사영을 평면에서 생각하는것이 아니라 평행이동시켜 원래의 선분과 같이 삼각형을 이루게 하여
각을 만들어냅니다.
위 그림처럼 각 θ가 생기게되고 그 세타값을 통해 삼각함수로 정사영의 길이를 구할 수 있습니다.
원래의 선분 ab 의 길이 * cosθ 를 한 값이 정사영의 길이가 됩니다.
이 개념은 삼각함수를 이해해야 합니다. 삼각함수는 추후에 다루도록 하겠습니다.
선분이 아니라 평면인 경우 넓이가 생기는데 이 경우에도 동일한 방식으로 넓이를 구할 수 있습니다.
다만 이후에 다룰 내용에 꼭 필요한 내용이 아니기에 자세한 설명은 생략하겠습니다.
벡터의 정사영에 대한 표기는 proj를 사용합니다.
정사영의 영단어인 projection을 의미합니다.
위의 이미지처럼 벡터 U 위에 벡터 V 의 정사영을 표기할 경우 proj u V로 표기합니다.
이 정사영을 구하는 방법은 벡터 U와 동일한 방향에 특정한 길이를 가지는 벡터이므로
두 정보를 통해 구할 수 있습니다.
위처럼 벡터의 길이를 구하는 앞부분과 벡터 U의 방향을 구하는 뒷부분이 합쳐진 식으로
결과를 구할 수 있습니다.
이때 뒷부분은 단위 벡터를 구하는 방식과 동일합니다.
이 개념을 토대로 다음번엔 3차원에서의 충돌처리를 구현해 볼 예정입니다.