Q: Quaternion(쿼터니언)에 대해 설명하시오.
A: 사원수, 혹은 해밀턴 수라고도 부르며 복소수를 확장해 만든 수 체계이다.
덧셈에 대해서는 결합법칙, 교환법칙이 성립하지만, 곱셈에 대해서는 결합법칙만 성립하고 교환법칙은 성립하지 않는다.
쿼터니언은 하나의 실수와 3개의 서로 다른 복소수로 구성이 되며, 곱셈 연산 시 겹선형 연산을 한다.
예를 들어, a0 + a1i + a2j + a3k에 대해 곱의 결과는 다음과 같이 나타난다.
× | 1 | i | j | k |
1 | 1 | i | j | k |
i | i | -1 | k | -j |
j | j | k | -1 | -i |
k | k | -j | -i | -1 |
단, 여기서 a0, a1, a2, a3는 모두 실수이다.
쿼터니언은 실수부와 허수부로 나눌 수 있는데,
이를 벡터에 적용하면 실수부를 스칼라 값으로, 허수부를 3차원 벡터로 간주한다.
마지막으로 위 예시에서 언급한 쿼터니언을 2×2 Complex matrix(복소행렬)로 나타내면 다음과 같다.
a + bi | c + di |
-c + di | a - bi |
Q: 물체의 회전을 연산 할 때 쿼터니언을 사용해야 하는 이유를 설명하시오
A: 오일러 각을 이용해 행렬 연산을 할 때 회전하는 축이 정지한 축과 겹쳐지는 상황이 발생하는데,
이를 짐벌락이라 부른다.
짐벌락은 오일러 각을 연산 할 때 3개의 축을 기반으로 연산을 하기 때문인데,
이를 회피하기 위해 쿼터니언을 이용한다.
쿼터니언을 이용해서 문제가 해결되는 이유는
3개의 축의 연산이 서로 다른 복소수로 되어 있기 때문에 서로가 독립적으로 연산이 될 수 있다.
참고자료
ko.wikipedia.org/wiki/%EC%98%A4%EC%9D%BC%EB%9F%AC_%EA%B0%81
ko.wikipedia.org/wiki/%EC%82%AC%EC%9B%90%EC%88%98
'메모장 > 기술면접' 카테고리의 다른 글
UE4 Montage와 Animation의 차이 (0) | 2020.09.01 |
---|---|
UE4 Garbage Collector(GC)가 작동되는 방식 (0) | 2020.09.01 |
UE4 UPROPERTY란 무엇인가? (0) | 2020.09.01 |
C++ malloc/free와 new/delete의 차이점 (0) | 2020.08.28 |
C++ Override 시 Virtual Keyword를 써야 하는 이유 (0) | 2020.08.28 |