본문 바로가기
DirectX/[Inflearn_rookiss] Part2: DirectX12

20. Quaternion - 짐벌락 현상과 복소수에 대한 개념

by 헛둘이 2023. 1. 30.

출처 : https://handhp1.tistory.com/3

오일러 방식의 문제?

- x축을 90도로 놓고 y축을 회전시키면 z축이 돌아간다. 왜지? 축이 손실된 것

- 이 현상을 짐벌락 현상이라고 한다.

 

짐벌락 현상이란?

- 각 축의 회전이 결합할 때 세 축 중 하나의 축이 먹통이 되는 현상

 

- 유니티는 회전을 적용하는 순서가 z - x - y 순으로 적용되는데, 

항상 2번째 축에서 문제가 발생한다.

 

- z축을 회전시키면 x축은 그 영향을 받아 원래 궤도가 아닌 다른 궤도로 움직인다.

 

이를 해결하기 위해서는?

- 앞으로 배울 쿼터니언의 개념을 도입해야 한다!

 

 


복소수 개념 정리

 

복소수란?

- a + bi 꼴의 수를 말하며 a는 실수부, bi는 허수부라고 칭한다.

 

이 수를 벡터와 같이 2차원 평면에 표현할 수 있는데 이 평면을 복소평면이라고 한다.

 

출처 : 위키피디아

 

1) 복소수의 덧셈 뺄셈

-> 실수부는 실수부끼리, 허수부는 허수부끼리 계산할 수 있다.

-> (a + bi) ± (c + di) = (a ± c) + i(b ± d)

 

2) 복소수의 곱셈

-> 실수의 곱셈과 동일하다

-> (a + bi)(c + di) = ac + adi + bci + bdi²

= (ac - bd) + i(ad + bc)

 

3) 켤례복소수

-> a + bi의 켤례복소수는 허수부에 -를 붙인 것 (a - bi)

-> 켤례복소수의 성질 : (a + bi)(a - bi)은 a² + b²가 된다.

-> a² + b² + abi - abi = a² + b²

 

z의 크기를 구해보자!

- z는 우선 a + bi로 나타내므로,

- |z| = |a + bi|가 되고, 피타고라스 정리에 의해 √a² + √b²이 된다는 것을 알 수 있다.

- 또한 위에서 설명했듯 켤례복소수의 곱은 a² + b²이므로, 이는 z의 크기와 연관이 있다는 것을 알 수 있다.

- zz* = (a+bi)(a-bi) =  |z|² = a² + b²

 

다음과 같이 z₁, z가 있다고 가정해보자.

z = r₁(cos𝜽 + i * sin𝜽₁)

z = r₂(cos𝜽 + i * sin𝜽₂)

 

z₁과 z₂는 위와 같이 이루어져 있을 것이다.

z₁과 z₂를 곱해보면 어떤 결과가 나올까?

 

전개하면 아래와 같은 식이 된다.

r₁·r₂( (cos𝜽·cos𝜽₂) + (cos𝜽·i * sin𝜽₂) + (i * sin𝜽₁·cos𝜽₂) + (i * sin𝜽₁·i * sin𝜽₂) )

 

이 식을 실수끼리, 허수끼리 모으면 아래와 같은 식이 된다.

r₁·r₂( (cos𝜽·cos𝜽₂) - (sin𝜽₁·sin𝜽₂) + i( (cos𝜽·sin𝜽₂) + (sin𝜽₁·cos𝜽₂) ) )

 

그런데 이 식을 좀 더 들여다보면 코사인의 합 공식, 싸인의 합 공식으로 간추릴 수 있다.

r₁·r₂( cos(𝜽₁ + 𝜽) + i( sin(𝜽₁ + 𝜽) ) )

여기서 r₂가 애초에 크기가 1이었다면? 저 식에서 r₂가 날아가게 되고 두 각을 더해준 각도를 구할 수 있게 된다.

 

결론적으로 복소수 2개를 곱해줬더니 벡터가 회전했다!?

이게 가능한 이유는 i²이 -1이기 때문에 이 식이 성립했기 때문이다!

 

이 얘기는 복소수의 곱이 회전 행렬과 동일하다는 얘기인데.. 맞나?

- a + bi를 복소평면 상에서 cos𝜽 + i * sin𝜽라고 볼 수 있다.

- 이 식을 각 성분으로 나눠서 행렬로 표현하면

위와 같이 표현할 수 있으며, cos과 sin을 밖으로 빼서 더하면

cos𝜽 * 1+ sin𝜽 * i로 표현될 수 있다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'DirectX > [Inflearn_rookiss] Part2: DirectX12' 카테고리의 다른 글

22. Quaternion - 개념과 사용 방법  (0) 2023.02.01
21. Quaternion - 로드리게스 회전  (0) 2023.01.31
19. Frustum Culling  (2) 2023.01.28
18. SkyBox  (0) 2023.01.27
17. Normal Mapping  (0) 2023.01.27

댓글