바라보는 시점을 적용할 카메라의 위치 eyePosition와 바라보는 방향 eyeTarget 벡터를 선언해준다. 

그리고 플레이어의 기준에서 바라보게 하기 위해서 플레이어가 현재 바라보고 있는 방향에 대한 정보를 얻어온다.

 

 

플레이어가 바라보는 방향을 t가 있는 ( 0, 0, 1 )을 기준으로 세워두고 플레이어 방향을 의미하는 X축과 Y축에 대한 각도를 행렬로 만들어서 시점고정을 하기위한 target에 초기화를 한다. 그리고 플레이어의 살짝 뒤편으로 이동해서 시점을 바라볼 수 있게끔 적당한 수치를 곱해서 eyePostion에 빼준다.

 

 

그리고 어떠한 위치에서 해당 시점을 바라보게 하기 위해 회전 후 이동을 하는 순서로 로직을 짠다.

이동 후 -> 회전은 점을 X축 회전으로 어느정도 끌어올려야하는지 알아내기 어렵기 때문에 z와 y축에 대한 각도가 어느정도 각도에 위치한지 arctan으로 알아낸 다음 X축 회전 후 Y축 회전으로 해당 위치로 이동시킨다.

여기서 -ax 처럼 역순으로 회전을 대응 시키는 이유는 자신이 아닌 세계를 돌리려는 의도에서이다.

 

어떤 두 점을 알고 있고 두 점에 대한 각을 얻고 싶을 때는 다음처럼 하면 된다.