일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발일지
- 오브젝트 풀링
- VR
- 오큘러스
- HAPTIC
- 팀프로젝트
- 모작
- Oculus
- 포트폴리오
- 연습
- 드래곤 플라이트
- 유니티 Json 데이터 연동
- ChatGPT
- 유니티
- Photon Fusion
- 멀티플레이
- 길건너 친구들
- meta
- OVR
- 팀 프로젝트
- CGV
- meta xr
- 개발
- XR
- 유니티 UI
- 앱 배포
- 가상현실
- input system
- 드래곤 플라이트 모작
- 유니티 GUI
- Today
- Total
EasyCastleUNITY
[주말과제] 복소수와 사원수 본문
복소수 (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
여기서, 프로그래머가 알아야 하는 사실은 사원수가 3차원 공간상에서의 회전을 계산하는 수 체계라는 것이다.
이 사원수를 통해 3x3의 형태로 정의되는 3차원상에서의 공간위치를 계산하는 것이 용이해졌다.
사원수는 3x3 행렬을 4x4로 확장하여 계산하는 특징을 가진다. 이를 통해, 전체 3차원 상의 공간 축 x,y,z를 그대로 고정시킨 상태로, 회전을 실행 하는 것이 가능해졌다. 즉, 전혀 다른 새로운 축을 통해 3차원 회전이 가능하다는 것이다.
밑에 그림은 해당 예시이다.
이런 식으로 아예 새로운 축을 기준으로 회전을 시키는 것이 가능하기에,
오일러 회전에서 생기는 문제인, 짐벌락이 생기지 않고, 정확한 3차원 회전이 가능하다.
짐벌락에 대한 것은 아래 링크에서 살펴보기 바란다.
결국 짐벌락이란, 3차원 공간 축인, x,y,z 축으로 계속 회전을 하다가는, 언제가 2가지 축이 완전히 겹치는 현상이 발생하게 된다. 그래서 축이 고정되는 효과가 나타나, 그 시점부터 정상적으로 회전을 시키는 것이 불가능하다.
그래서 이런 점을 해결하기 위해 unity 등의 엔진에서는, 내부적으로 사원수를 통해 계산하여 3차원 오브젝트를 회전을 시킨다.
그렇기에 unity에서의 rotate의 타입이 Quarternion 즉 사원수인 것이다.