
링크 : https://youtu.be/AAp6ipIMooo?feature=shared
6. 회전의 수학 II : 사원수
앞선 강의에서 3차원 회전을 표현하는
축-각 방식과 오일러 각 방식이 있다고 소개해드렸습니다.

두 방식의 중간 포지션에서 문제점을 해결해 줄 수 있는 솔루션이 있는데
그것이 바로 사원수 입니다.
사원수를 사용해서 3차원의 회전을 어떻게 안정적으로 구현하는지,
그 구조와 원리에 대해 설명해보겠습니다.

사원수는 일상생활에서 사용하는 실수와 같은 수 입니다.

✔️ 사원수는 4개의 요소로 구성되어 있습니다.
수가 4개로 구성되어 있다니 이상하죠?
그렇다면 수는 무엇일까요?

수학에서 수는 집합의 관점에서 이야기를 하는데
다음과 같이 작대기를 두개 써서 R이라는 심볼로 표현합니다.
리얼 넘버의 약자입니다.

이 실수 집합을 시각화 할 때 수직선을 사용합니다.
하나의 수를 수직선 위의 점에 대응하고
그 점들이 빈틈없이 꽉 채워져서 모여있으면
이것이 바로 개념적인 무한의 요소를 가지는 실수가 됩니다.

단순한 집합 개념에서 수를 바라보는 데 한계가 있습니다.
왜나하면 집합이란 단지 원소들의 묶음일 뿐입니다
수가 다른 집합과 가지는 차별점은 앞서 설명한 사칙연산에 있습니다.
사칙연산이란 수와 수를 사용해서 2개를 결합해 새로운 수를 만들어내는 시스템을 의미합니다.

수는 시스템(구조)를 가진 집합 이라고 표현합니다.
수가 가지고 있는 이런 연산 체계를 분석해서
수학자들은 다음과 같은 성질을 도출했습니다.

이러한 성질들을 만족할 수 있는 체계가 만족이 된다면
몇개로 구성 되어있던 간에 수 라고 부를 수가 있게 됩니다.

여러 요소로 구성되어 있는 수 중에서
대표적인 것으로 복소수가 있습니다.
✔️ 복소수는 우리가 사용하는 실수와 허수로 구성된
일상생활에선 사용하지 못하는 수 입니다.
하지만 앞서 설명한 연산 체계라는 시스템이 빈틈없이 잘 동작하기 때문에
우리가 수 라고 부를 수가 있는 겁니다.

이 복소수에서 개념이 확장된 수가 4개로 구성된 사원수 입니다.

사원수는 실수와 세 종류의 허수로 구성되어 있는데 이 역시도
연산 체계가 동작하고 있기 때문에 수라고 부르는 겁니다.

회전을 한 마디로 요약하자면
"모든 회전이란 결국 크기가 1인 수와의 곱이다." 라는 문장으로 요약할 수 있습니다.
먼저 우리가 사용하는 실수를 살펴보겠습니다.

어떤수에 1을 곱한 결과는 언제나 동일한 수를 만들어냅니다.
이는 회전의 관점에서 보면, 0도 회전했다.
즉 회전인데, 아무런 회전이 들어가지 않았다라고 볼 수가 있습니다.

실수에서 크기가 1인 다른 수로는 -1이 있습니다.
어떤 수에 -1을 곱하면 부호가 반대인 수를 만들어 내게 되는데요
이것은 180도 회전이라고 볼 수 있습니다.

실수에는 이 두가지 외에는 크기가 1인 수가 존재하지 않습니다.
사실 실수는 평면이 아닌 직선이기 때문에 우리가 회전을 논하는게 큰 의미가 없습니다.
하지만 어떤 평면을 나타내는 수가 있다면 어떻게 될까요?

앞서 언급한 실수와 허수로 구성된 복소수는 평면으로 표현이 가능합니다.
✔️이것을 복소 평면이라고 이야기합니다.
복소 평면은 실수를 x축, 허수를 y축으로 두고 다음과 같이 좌표로 표현합니다.

그렇다면 여기서 크기가 1인 수는 어떤 것들이 있을까요?
앞선 영상에서 배운 삼각함수를 활용하면 (cos θ , sin θ ) 조합으로
크기가 1인 복소수를 표현할 수 있습니다.
복소수 체계가 가진 곱셈 연산을 사용해서 임의의 복소수에 크기가 1인 복소수를 서로 곱하면
각 θ 만큼 회전이 발생하게 됩니다.
이것의 원리를 직접 알아보겠습니다.

( cos θ , sin θ ) 는 sin θ 에 i를 붙여서
cos θ + sin θi 라고도 표현을 합니다.

여기서 사용하는 i는 허수부 라고 부르는데
이것을 두번 곱한 결과는 -1인 실수가 되는 수 입니다.

2개의 임의의 복소수 a + bi와 c + di를 곱하면
위와같은 공식이 나옵니다.

여기서 i제곱은 -1이 되기 때문에
위와같은 식으로 전개됩니다.

그렇다면 임의의 복소수 x+yi에 크기가 1인 복소수인 cos θ + sin θ i를 곱하면
어떻게 될까요?

회전 변환의 식과 완전히 완전히 동일합니다.

따라서 크기가 1인 복소수의 곱은 평면의 회전 변환을 의미한다는 겁니다.

이러한 복소수 체계와 유사하게
3차원 공간에 회전을 나타내는 어떤 수 체계도 있겠죠
해밀턴이라는 수학자가 3차원 공간에서 동작하는 수 체계를 찾기위해서
10년동안 연구했는데 이를 만족하는 빈틈없는 연산 체계를 찾을 수가 없었습니다.
4차원의 관점으로 생각으로 생각해보려는 아이디어로 발견하게 되었고
이때 발견한 4차원의 수의 체계가 사원수 입니다.

사원수는 하나의 실수와 세 개의 허수 i, j, k로

각 3차원의 x,y,z에 대응시키고,
나머지 한 차원을 0으로 두어서 다룹니다.

해밀턴이 처음 사원수를 발견할 때, 3개의 허수를 묶어서 벡터라고 불렀고
나머지 하나의 실수를 스칼라 라고 불렀습니다.
지금은 이 용어의 정의가 많이 달라졌죠.

이러한 사원수의 곱셈 연산은 요소가 4개다 보니 좀 많이 복잡합니다 .

이것을 벡터와 실수 두 가지로 구분해서 계산을 해보면
벡터의 내적과 외적으로 요약이 됩니다.

사원수도 복소수와 마찬가지로
크기가 1인 사원수의 곱셈은 4차원 공간에서 회전을 의미합니다.
4차원 공간에서 크기가 1인 사원수는 어떤것들이 있을까요?

대표적으로 위와같이 표현됩니다.
책에서는 4차원에서 실수부가 커지면 3차원 영역이 줄어들고
3차원 영역이 커지면 실수부가 줄어드는 관계가를 가집니다.
하지만 우리에게 필요한 것은 4차원 공간의 회전이 아닌 3차원 공간의 회전입니다.

안정적인 3차원 공간의 회전을 구축하기 위해서
축각 방식의 회전을
사원수로 대신 계산 해봤습니다.

이를 전개하면 각을 절반으로 나눈 크기가 1인 사원수와
그 반대 방향으로 진행하는 크기가 1인 사원수의 곱으로
표현할 수가 있습니다.
따라서 우리가 사용할 3차원 공간에서 임의의 축에 대해서 각 θ 만큼 수행하는 회전 역시
크기가 1인 사원수와의 곱으로 표현이 가능해집니다.

사원수의 곱셈을 정리해보면
여러 과정을 거쳐서 짤막하게 벡터의 외적식으로 떨어집니다.
이 벡터의 외적식은 게임 엔진에서 사용하는 3차원 공간에 벡터를 돌리는
기본 회전 공식으로 사용이 됩니다.
▶️ 사원수의 활용
이러한 사원수의 회전 시스템을 어떻게 게임 엔진이 사용하는지에 대해 정리해보겠습니다 .

사원수는 외적 연산을 사용해서 빠르고 간편하게 회전을 처리할 수 있는 계산 방법입니다.
하지만 축-각 방식이고 주어진 각을 사용하는 것이 아니고
절반의 각을 사용하기 때문에 일반 사람들이 사원수 체계를 이해하고
이것을 사용해서 어떤 회전을 지정하기가 까다롭습니다.
그래서 게임 제작 단계에서는 고정된 각을 지정하기 위해서는 오일러 각 방식을 사용합니다.
하지만 사원수가 제공하는 축-각 방식은
부드러운 회전이나 짐벌락 같은 문제를 예방할 수가 있기 때문에
내부적으로 회전을 계산할 땐 유용하게 사용할 수가 있습니다.
그리고 사원수는 행렬로 변환이 용이합니다.
▶️게임 엔진들의 회전시스템

정리하면, 위 그림과 같이
게임 엔진들이 회전 시스템을 구축한다고 요약할 수가 있습니다.
회전에 관련된 모든 계산은 내부적으로 사원수 체계에서 진행이 됩니다.
하지만 콘텐츠 개발자들이 게임 콘텐츠를 만들 때에는 이 지정된 각을 다루기 편하도록
유저 인터페이스에서는 오일러 방식으로 변환해서 보여줍니다.

회전을 담당하는 사원수에 대해 알아봤습니다.
지금까지 게임 제작에 사용하는 여러가지 수학에 대해 알아봤습니다.
'개발개발 > 게임수학' 카테고리의 다른 글
게임 엔진을 지탱하는 게임 수학-1. 기초-(2) 함수 (0) | 2025.01.23 |
---|---|
게임 엔진을 지탱하는 게임 수학-1. 기초- (1) 수의 구조 (0) | 2025.01.22 |
이득우의 게임수학_입문_5. 회전의 수학 I : 삼각함수 (1) | 2025.01.15 |
이득우의 게임수학_입문_4. 물체의 수학 III : 내적과 외적 (0) | 2025.01.14 |
이득우의 게임수학_입문_3. 물체의 수학 II : 정점과 삼각형 (0) | 2025.01.12 |
댓글