본문 바로가기
프로그래밍/DirectX11(2D, 3D)

[3D] 쿼터니언(Quaternion)

by Nessie! 2023. 3. 9.

쿼터니언(Quaternion)은 4차원 수학적 개념으로, 3차원 공간을 회전하는 데 사용된다.

복소수(Complex number)와 유사하지만, 복소수가 2차원 평면에서 회전하는 데 사용되는 것과는 달리 쿼터니언은 3차원 공간에서 회전하는 데 사용된다고 한다. (근데 복소수가 뭔진 모른다 ㅋㅋ;;)

 

쿼터니언의 표기: q = w + xi + yj + zk

여기서 w, x, y, z는 실수이고, i, j, k는 각각 x, y, z 축을 나타내는 가상의 단위 벡터로 [i² = j² = k² = ijk = -1] 이다.

여기서 w는 스칼라, x, y, z는 각각 i, j, k 방향의 벡터이다.

 

회전을 나타내는 쿼터니언은 q = cos(θ/2) + sin(θ/2)i 으로 계산할 수 있다. (θ는 회전 각도)

 

3차원 공간에서 벡터 (1, 2, 3)을 x축을 기준으로 90도 회전시키고 싶다고 가정하고 진행해보면 아래와 같다.

 

즉, v = q (0 + 1i + 2j + 3k) q* 으로 계산할 수 있다. (q*는 q의 켤레 복소수라고 한다.....;)

 

위 식을 계산하면, 회전된 벡터 v는 다음과 같다!

v = (0.267, -2.535, 1.802)

위와 같이 쿼터니언을 이용하여 벡터의 회전을 계산할 수 있습니다.

 

쿼터니언은 회전을 나타내는 단위 사원수(Unit quaternion)로도 사용된다. 이 단위 사원수는 회전 축과 회전 각도를 표현할 수 있으며, 3차원 공간의 어떤 벡터도 회전 축이 될 수 있다고한다.

쿼터니언은 회전과 관련된 계산을 간단하게 할 수 있기 때문에 3D 그래픽, 로봇공학, 물리학 등에서 널리 사용된다.

 

  1. 벡터: 벡터는 크기와 방향을 가지는 양. 일반적으로 화살표로 표시되며, 화살표의 길이는 벡터의 크기를 나타내고, 방향은 화살표의 방향을 나타낸다.
  2. 공간 회전: 공간 회전은 회전 축을 기준으로 벡터를 회전시키는 것. 회전 축은 공간에서의 직선이며, 회전 각도에 따라 벡터가 회전하게 됩니다. 회전 후의 벡터는 기존의 벡터와 크기는 변하지 않고 방향만 변경된다.

 

공간회전은 이 이미지를 보면 이해된다

이미지 출처

댓글