티스토리 뷰

수학&물리

쿼터니안과 삼차원 회전 2

임현상 2019. 9. 23. 03:22

 지난 시간에 정의한 벡터의 일반적인 곱셈을 통하여 쿼터니안 연산의 유도과정을 전개해보겠습니다. 이 과정이 150여년전 해밀턴의 사고 과정과 얼마나 유사할 지는 확신은 못하지만 이 것을 고민하는 와중에 폭 넓은 이해를 할 수 있었습니다.

 

1. 이차원 회전

 삼차원 회전에 앞서서 분명 평면상에서 이차원의 회전에 대해 공부했을 것입니다. 이차원 회전은 아래 그림과 수식으로 설명 가능합니다.

 a벡터의 방향을 i방향으로 잡고 회전 축의 방향을 k방향으로 잡은 후 회전하는 이미지를 나타낸 것입니다. i방향으로는 cos값 만큼 줄고 j방향으로 sin값이 곱해진만큼 더해지는 것을 통해 회전이 표현됨을 볼 수 있습니다. 위 연산은 일반적인 벡터 곱 연산을 사용하여 표현 가능할 것으로 보입니다. 우선 기존 벡터 acos값을 곱하는 부분도 있으므로 스칼라와 벡터 곱을 동시에 쓰면 정확히 표현될 것입니다.

 

(스칼라 + 벡터) X (회전 전 벡터) = (회전 후 벡터)

 

이와 같은 형태로 나오도록 연산을 추정해보겠습니다.

회전 후 인 a 프라임 벡터가 나오려면 p q 어떤 값을 가져야 할까요? 이차원 회전에선 p값은 0과 곱해지므로 어떤 값을 가져도 상관없으며 q값은 1을 가져야 a’과 같은 식이 나옴을 확인할 수 있습니다. q값이 1인 벡터 곱셈을 통해

을 곱하는 것이 이차원에서 벡터를 회전시키는 연산인 것입니다.

 

 2. 3차원으로 확장

 그렇다면 2차원 회전과 3차원 회전의 차이는 무엇일까요? 이차원회전은 회전하는 벡터와 회전 축이 무조건 직교하는 경우이며, 3차원상의 회전은 아래그림과 같이 직교하지 않는 경우 또한 있습니다. 이 경우엔 회전축에 직교하는 성분과 평행한 성분을 나눠서 생각하면 분석하기 쉽습니다. 직교하는 성분의 회전은 2차원 회전이므로 위에서 설명한 연산자를 곱해주면 벡터회전이 구현됩니다. 그렇다면 이 연산자를 평행한 성분에 곱하면 어떻게 될까요?

 p가 어떤 값이어야만 할까요? 짐작이 쉽지 않습니다. 우선 연산결과에 스칼라 값이 남아 있는 것이 찝찝합니다. 적절한 p값을 찾기 위해 다음과 같이 접근해보겠습니다. ‘원래 연산의 theta 부분에 마이너스 theta를 대입하여 역연산을 구하고, 이 역연산을 곱했을 때 원래 aparal 벡터로 돌아가게 만드는 p값을 구한다.‘ 그렇다면 a’paral에 역연산을 곱해보겠습니다.

p-1일 경우 cos제곱 더하기 sin 제곱이 되어 1값이 됩니다.

정리하자면, p-1일 때 역연산을 통해 aparal이 원래 위치로 돌아온다. p-1이고 q1인벡터 곱셈을 이용하면 삼차원 회전을 구현할 수 있을 것으로 보입니다. 다만 문제는 수평 성분 벡터는 스칼라 값이 생긴다는 것입니다. 이것을 제거해 주어야합니다. 아래 두그림은 축에 수직인 벡터 성분 anorm 과 평행 벡터 성부 aparal에 곱하기 연산을 하였을 때 회전하는 것을 그래프로 표현하였습니다. s축은 scalar 값의 크기를 표현하였습니다.

위의 그림과 같이,

연산을 어떤 벡터에 취하면 그 벡터의 k와 수직한 성분은 k를 축으로 theta 만큼 회전하고 수평 성분은 벡터의 크기가 줄어들고 스칼라 값이 생기는 것을 확인할 수 있습니다. 그리고 그래프에서 확인하실 수 있듯이 스칼라 값과 k성분을 두 축으로 하는 공간에서의 화살표가 회전하는 것과 같다는 것을 확인할 수 있습니다. 그렇다면 삼차원 회전의 목표는 수평성분 벡터는 가만히 유지시키고, 수직 성분만 회전시키는 것입니다. 그것을 가능하게 하려면 어떻게 해야 할까요?

 이것을 해결하기 위해선 수평성분 연산과 수직성분 연산의 차이를 이용해야 합니다. 둘의 차이는 내적연산과 외적 연산입니다. 수직성분은 내적 값이 0임으로 외적 연산에만 영향을 받으며, 수평성분은 반대입니다. 내적연산과 외적연산의 큰 차이는 교환 법칙입니다. 외적은 교환 법칙이 성립하지 않고 연산 순서를 바꾸면 바꾸기 전의 음수 값을 갖습니다. 내적 값은 이와 다르게 교환 법칙이 성립하므로 값이 유지됩니다. ,

연산을 취하면 수직성분은 원래와 반대방향으로 돌아가고, 수평성분은 같은 방향으로 회전합니다.

 위의 그래프로도 i,j 평면에서만 벡터가 반대방향으로 회전하는 것을 확인할 수 있습니다. 그렇다면 이 연산을 하되 theta가 아닌 마이너스 theta를 대입하면, i,j 평면에선 벡터가 처음과 같은 방향으로 회전하고 k,s평면에선 벡터의 회전 방향이 반대가 될 것을 예상할 수 있다. 그렇다면 원래 연산을 한 후 뒤쪽에 마이너스 theta를 대입한 연산을 연속으로 취한다면, i,j 평면에선 2theta만큼 회전하고, k,s 평면에선 벡터가 원래 위치로 돌아올 것을 예상할 수 있다. 이를 수식 적으로 확인해보겠다.

위 수식을 보면 수직 성분 벡터는 2theta만큼 회전하고, 수평 성분은 원래대로 돌아온 것을 확인할 수 있습니다. 2theta가 아닌 theta만큼 회전하기 위해선 theta 대신 이분의 theta를 대입하면 될 것입니다.

정리하자면 이 연산을 통해서 임의의 벡터 ak벡터를 축으로 theta 만큼 회전시킬 수 있습니다. k는 특정한 z축이 아니며 임의의 축이 될 수 있습니다. 서클 연산은 이전 자료에서 정의한 일반적인 벡터 곱셈에서 p-1이고 q1인 경우입니다. 이와 같이 벡터의 연산 측면으로만 설명하고 복소수의 개념을 도입하지 않아도 쿼터니안 회전연산의 수식을 유도할 수 있습니다. 긴 글 읽어주셔서 감사합니다. 항상 피드백과 부족한 점 댓글로 부탁드립니다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함