EasyCastleUNITY

[주말과제] 복소수와 사원수 본문

카테고리 없음

[주말과제] 복소수와 사원수

EasyCastleT 2023. 8. 13. 02:02

복소수 (complex number) 

복소수는 실수와 허수로 나누어진다. 

이 복소수가 등장하기 전에는, 오직 실수라는 개념만을 가지고, 여러가지 과정이 복잡한 계산들을 하고 있었다.

하지만, 복소수가 등장하고, 허수라는 개념이 수학자들 사이에서 생겨나게 되면서, 복소수는 애용되기 시작되었다. 

 

즉, 복소수는 필요에 의해서, 허수라는 개념이 만들어지며 정의된 수의 개념이다. 정확히는 수의 개념이 확장되었다는 것이라고 할 수 있다. 

물론, 복소수가 수의 체계에 정식적으로 인정되기 까지는 많은 어려움이 있었지만, 오일러가 i라는 개념을 확립하고, 

가우스 대에 대수학의 기본정리가 증명이 되며, 수학계에 안착하게 되었다. 

 

간추려 얘기해보자면, 결국 복소수는 여러가지 수의 대한 계산을 더 쉽고 간단하게 하기 위해 나왔다고 할 수 있다. 

또한 복소수는, 평면상에서의 회전을 계산할 때 사용이 된다.

 

사원수 (Quarternion) 

사원수도 복소수와 비슷한 관점에서 시작했다. 정확히는 복소수에서 새로운 개념인 i가 정의되는 것을 보고

다른 개념들을 정의하여, 3차원 공간을 표현하는 수를 만들어 보려고 한 생각에서 나온것이 사원수이다. 

 

윌리엄 로원 해밀턴이 거의 모든 생을 받쳐 정의하고 검증한 수 체계이다. 

 

사원수에서는 i,j,k 가 정의가 되게 되는데, i,j,k의 특성은 밑에 이미지와 같다.

사원수의 특징들

이 사원수는 3차원 공간상에서의 회전을 계산하는데 사용된다. 

이러한 회전에 대한 것을 여러가지 증명이 있지만 너무 길어지기에 생략한다. 

자세한 사항은 아래에 링크에서 보는 것을 추천한다. 

https://namu.wiki/w/%EC%82%AC%EC%9B%90%EC%88%98

 

사원수 - 나무위키

四元數 / Quaternion 해밀턴 회로를 발견한 아일랜드의 수학자 윌리엄 로원 해밀턴이 창시한 수 체계. 복소수가 허수 단위 iii를 도입했듯 새로운 단위 jjj, kkk를 도입한 것이다. 복소수를 도입할 때 x

namu.wiki

여기서, 프로그래머가 알아야 하는 사실은 사원수가 3차원 공간상에서의 회전을 계산하는 수 체계라는 것이다. 

이 사원수를 통해 3x3의 형태로 정의되는 3차원상에서의 공간위치를 계산하는 것이 용이해졌다. 

 

사원수는 3x3 행렬을 4x4로 확장하여 계산하는 특징을 가진다. 이를 통해, 전체 3차원 상의 공간 축 x,y,z를 그대로 고정시킨 상태로, 회전을 실행 하는 것이 가능해졌다.  즉, 전혀 다른 새로운 축을 통해 3차원 회전이 가능하다는 것이다.

밑에 그림은 해당 예시이다. 

3차원 축을 기준으로 회전하는 것이 아닌, 새로운 축을 기준으로 회전

이런 식으로 아예 새로운 축을 기준으로 회전을 시키는 것이 가능하기에, 

오일러 회전에서 생기는 문제인, 짐벌락이 생기지 않고, 정확한 3차원 회전이 가능하다. 

짐벌락에 대한 것은 아래 링크에서 살펴보기 바란다.

https://handhp1.tistory.com/3

 

짐벌락과 오일러 각 (gimbal lock, euler angles)

개요 오일러 각이란? 짐벌락이란? 짐벌락은 왜 생기나? 1. Gimbal 이란? 출처 - [http://ko.wikipedia.org/wiki/%EC%A7%90%EB%B2%8C] 이것이 바로 짐벌이다. 위키에는 단일 축으로 물체가 회전하도록 중심축을 가진

handhp1.tistory.com

결국 짐벌락이란, 3차원 공간 축인, x,y,z 축으로 계속 회전을 하다가는, 언제가 2가지 축이 완전히 겹치는 현상이 발생하게 된다. 그래서 축이 고정되는 효과가 나타나, 그 시점부터 정상적으로 회전을 시키는 것이 불가능하다. 

 

그래서 이런 점을 해결하기 위해 unity 등의 엔진에서는, 내부적으로 사원수를 통해 계산하여 3차원 오브젝트를 회전을 시킨다. 

그렇기에 unity에서의 rotate의 타입이 Quarternion 즉 사원수인 것이다.