axis 축으로 angle 도 만큼 시계방향으로의 회전을 나타내는 Quaternion 을 out 에 담아 돌려줍니다. Quaternion.angleAxis 로 만든 회전은 임의의 한 축에 대해서 회전하기에, 짐벌락(gimbal-lock) 현상이 없습니다.

Syntax

Quaternion.angleAxis(angle, axis)
Quaternion.angleAxis(angle, axis, out)

Parameters

angle

회전할 각도(degree)를 나타내는 number .

axis

회전축을 나타내는 Vector3. 반드시 $\|\vec{axis}\| = 1$ 인 단위 벡터이어야 하며, Quaternion.angleAxisaxis 가 단위벡터인지 검사하지 않습니다.

out

회전 사원수 $q = (cos(\frac{angle}{2}^\circ), \text{ }sin(\frac{angle}{2}^\circ)\cdot\vec{axis})$ 를 담을 Quaternion . 인자를 주지 않으면 임시 변수가 생성됩니다.

Return value

axis 축이 만드는 구형평면에서 시계방향으로 angle 도 만큼의 회전을 나타내는 Quaternion. out 인자를 주었다면, out 에 결과를 담은 후 그대로 돌려줍니다.

Description

회전축 $\vec{n}$ 에 대하여, 시계방향으로 $\theta$ 도 만큼 회전하는 회전 사원수는 아래와 같이 정의됩니다:

$$ q = (cos(\frac{\theta}{2}), sin(\frac{\theta}{2})\cdot \vec{n}) $$

회전사원수를 위처럼 정의한 이유는, 순허수 사원수(vector quaternion)와 $q = (cos(\theta),\;sin(\theta)\cdot\vec{n})$ 형태의 사원수를 곱할 경우 로드리게스 회전 공식(Rodrigues` rotation formula)의 부분항을 얻을 수 있기 때문입니다.

$q = (cos(\frac{\theta}{2}), sin(\frac{\theta}{2})\cdot \vec{n})$ 는 그렇게 해서 얻은 식을 정리하는 과정에서 정의됩니다. 자세한 회전의 원리에 대해서는 Quaternion.mulVector() 를 읽어보시길 바랍니다.

사원수가 짐벌락 현상(gimbal-lock)이 없다는 말은 임의의 회전축에 대한 회전을 간단하게 만들어낼 수 있기 때문입니다. 즉 사원수를 사용했다고 해서 짐벌락 현상이 아예 없다는 말이 아닙니다.

Quaternion.angleAxis 처럼 하나의 회전축을 사용한다면 문제 없지만, Quaternion.euler() 는 여전히 오일러각으로 회전을 생성하므로 짐벌락 현상이 존재합니다.