본문 바로가기
게임 공부/Computer graphics

쿼터니언은 벡터로도 사용 가능

by woohyeon 2021. 8. 19.
반응형

회전축과 회전각으로 쿼터니언을 만들면 이 쿼터니언은 해당 회전축으로 회전각만큼 회전시키는 용도로 사용할 수 있다. 또한 이 쿼터니언의 벡터 부분만 가져다 사용하면 크기만 다를뿐 회전축에 해당하는 벡터를 그대로 사용할 수 있다.

예를 들어 UpVector와 40도를 전달하여 쿼터니언을 만들었다면, 이 쿼터니언을 가시적으로 출력해보면 크기만 다를뿐 UpVector와 방향은 동일하다. 물론 이는 쿼터니언에 대한 제대로 된 이해가 되었다면 당연한 결과이다. 

하지만 난 이해를 잘 못해서 고생했다.. 복잡하거나 어려운 개념을 보면 쉬운 개념까지 망각하거나 헷갈리게 된다.

 

다른 사람의 코드를 보다가 쿼터니언과 쿼터니언을 cross product하는 게 무슨 의미인지 궁금해서 실험해 보았다. 물론 쿼터니언을 잘 이해하고 있었으면 그냥 두 회전축을 외적하는 거라는 것을 알았을 테지만.. 

전구의 정면에 보이는 흰색과 노란색으로 겹쳐진 선이 정면 벡터이다. 파란색과 흰색이 겹쳐진 방향이 Up 방향이다. 

정면 벡터와 Up 벡터를 외적하면 빨간색 방향의 벡터가 나온다. 이 빨간색 벡터를 회전축으로 하고 theta만큼을 회전하는 쿼터니언을 생성하고 그 쿼터니언의 벡터 부분을 위와 같이 출력하면 그대로 빨간색 벡터와 방향이 일치한다. 즉 쿼터니언의 회전축과 동일하다. 또한 Up 방향을 회전축으로 하고 theta를 회전각으로 하는 쿼터니언을 생성하면 파란색 벡터가 된다. 이 또한 기존의 회전축과 동일하다. 그리고 이 두 쿼터니언을 cross product(red X blue)하면 초록색 방향의 벡터가 나온다.

 




댓글