[3D 수학] 사원수(Quaternion : 쿼터니언)

 

 

 

1. 사원수(Quaternion : 쿼터니언)란?

 

 

- 3차원 그래픽에서 회전을 표현할 때, 행렬 대신 사용하는 수학적 개념으로 4개의 값으로 이루어진 복소수(Complex Number) 체계이다.

아래 글에선 사원수와 쿼터니언을 번갈아가며 썼다.

 

(잠깐! 복소수란 현재 교육과정 중 가장 큰 범위의 수로 실수부와 허수부의 합으로 구성된 수이다.)

 

그렇다면, 사원수를 사용하는 이유는 무엇일까?

 

 

 

 

 

- 사원수는 행렬에 비해 연산 속도가 빠르고, 차지하는 메모리의 양도 적으며, 결과의 질에 있어 오류가 날 확률이 적다.

 

3개의 축에 대한 회전 연산을 동시에 적용하는 경우에 행렬을 사용하면 한 축이 소실되는 김벌락 현상이 발행할 수 있는데, 사원수를 사용하면 이 현상을 막을 수 있다. (미리 말해두지만, 사실 이것도 완벽하기 막지는 못한다.)

 

 

2. 사원수의 정의

 

 

- 사원수는 4차원 복소수 공간(Complex Space)의 벡터로서 다음과 같이 나타낸다.

 

 

 

 

- 사원수를 q = s + v 형태로 쓰기도 하는데, 여기서 s 는 q의 w 성분에 해당하는 스칼라(Scalar) 값이고, v는 q의 x, y, z 성분에 해당하는 벡터(Vector) 부분이다.

 

 

 

 

3. 사원수의 특징

 

- 사원수의 곱은 일반적인 분배법칙을 따르며 허수 성분인 i, j, k는 다음과 같은 특징을 갖는다.

 

 

(필자의 생각)

여기서 i, j, k 는 각각 x, y, z축에 대비된다고 할 수 있다. 정확히 그 축을 말하는 것이 아니라 어떠한 물체의 3축이라는 것이다. 따라서 서로 직교 하므로 ij와 ji는 교환법칙이 성립하지 않고, 역수 관계인 것이다.

또한, 서로 외적하면 다른 축을 가리킨다. 때문에 각각의 축에 대비된다고 할 수 있다.

 

 

 

 

 

 

 

 

 

 

사원수는 곱셈의 교환법칙이 성립하지 않는다.

 

 

 

위와 같은 두 사원수 q1,q2가 있을 때, 두 사원수의 곱q1q2는 다음과 같다. 

 

 

 

 

사원수를 스칼라, 벡터 형태로 표기할 때, 

 

 이렇게 표현할 수 있고, 두 사원수의 곱은 다음과 같다.

 

 

 

이는 앞에서 나온 q1,q2의 곱의 부호를 제외하고 곱했을 때 나온 값과 같다.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

- 사원수는 켤레(Conjugate)를 갖는다.

 

 

 

- 사원수의 역수  

 

 

그리고 아래와 같은 특징을 갖는다.

 

 

 

단위 쿼터니언을 갖는다.

 

q = [1, (0, 0, 0)]

 

 

 

단위 쿼터니언은 3D 공간에서 오일러, Axis 대신 방향을 표현한다.

 

쿼터니언으로 방향을 표현하려면 쿼터니언을 행렬로 변환하거나, 행렬을 쿼터니언으로 변환하는 방법이 필요하다.

 

 

3. 사원수의 회전

- 축 A에 대한 각도 Θ 만큼의 회전을 사원수로 나타내면,이다.

 

(이것에 대한 증명 과정은 추후 업로드 할까말까...ㅠㅜ)

 

이 사원수로 점 P를 회전하려면 qPq-1을 하면된다.

 

최종적으로 얻어진 사원수를 행렬로 변환하면, 아래와 같다.

 

 

 

 

 

4. 사원수의 보간

 

보간(interpolation)이란 처음과 끝의 값을 가지고 중간에 잇는 값을 계산해 내는 것이다.

물체의 애니메이션을 수행할 때, 보간을 통해 계산된 키프레임 사이의 중간 방향을 생성한다.

 

가장 간단한 보간은 선형보간(linear interpolation)으로 두 개의 값을 점으로 생각하고 두 개의 점을 이어주는 직선의 방정식으로부터 값을 얻어내는 방법이다.

 

두 사원수 q1,q2에 대해, 선형 보간된 사원수 q(t)는 다음과 같다.

 

 

이런 사원수는 정규화 해줘야 한다. 이 함수 q(t)는 q1과 q2사이의 호를 따라간다.

 

 

그림은 2차원 단면이나, 실제로는 4차원 단위 초구면 상의 경로를 따라간다.

 

이러한 선형 보간은 간단하고, 효과적이나 호를 일정한 비율로 추적하지 않는다는 문제가 있다.

 

여기에서 구면 선형보간(spherical linear interpolation : slerp)이 나타났다.

 

일단 유도과정은 생략하고 보면 다음과 같다.

 

 


 

 

 

 

 

 

 

쿼터니언에서 제일 중요한 것은 회전으로 이로 김벌락을 피하는 것이다.

이에 대해선 추후 업데이트 ... 하겠다. 

 

[출처] http://showmiso.tistory.com/57

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
51 블록체인과 유니티3d : Coding your own blockchain with Unity3D file 졸리운_곰 2019.02.22 536
50 DEP10401 : Cordova Simulate에서 앱을 실행하려면 Google Chrome이 필요합니다. 하지만 이 컴퓨터에 Chrome이 설치되어 있지 않습니다. https://www.google.com/chrome/browser/index.html에서 Chrome을 설치하세요. file 졸리운_곰 2019.01.30 441
49 Cordova 프로젝트 진행하기 (Hello World) file 졸리운_곰 2019.01.20 345
48 Cordova 개발환경 구성하기 (for Window) file 졸리운_곰 2019.01.20 568
47 자마린 (xamarin) firebase 졸리운_곰 2019.01.04 329
46 business-app-sample file 졸리운_곰 2018.09.06 516
45 A lightweight JSON library for Lua file 졸리운_곰 2018.04.09 379
44 Using PHP and MySQL with Ionic file 졸리운_곰 2017.11.24 782
43 모바일 앱 제작 시 꼭 알아야 할 전략│Localization file 졸리운_곰 2017.10.24 531
42 Re-Architecting a Firebase app to work with Node.js and MongoDB file 졸리운_곰 2017.10.19 530
41 IT 서비스 스토리보드 (와이어프레임) 샘플 file 졸리운_곰 2017.10.10 2854
40 모바일앱 스토리 보드 샘플 file 졸리운_곰 2017.10.10 540
39 스타트업과 앱 기획을 위한 UI Sketch Sheet file 졸리운_곰 2017.10.10 984
38 Minecraft : multicaft server 로그인시 500 database 에러시 file 졸리운_곰 2017.09.10 583
37 플래시 게임을 대체할 HTML5 게임 엔진 순위 file 졸리운_곰 2017.07.22 415
36 Reflection of Unity C# file 졸리운_곰 2017.06.25 628
35 [유니티 C# 기초 강의] 12. 델리게이트 file 졸리운_곰 2017.06.25 398
» [3D 수학] 사원수(Quaternion : 쿼터니언) file 가을의곰 2017.06.10 835
33 각도와 거리로 좌표 구하기 file 가을의곰 2017.06.10 1330
32 [OpenGL]Quaternion (사원수)를 이용한 회전 가을의곰 2017.06.10 785
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED