클래스선언.html

Quaternion 은 하나의 스칼라 $w$ 와 3개의 허수 $i, j, k$ 로 이루어진 사원수 $a + bi + cj + dk$ 를 정의합니다. 사원수는 회전을 나타내기 위해 사용됩니다. 임의의 회전축에 대한 회전을 쉽게 만들어낼 수 있으며,

Constructor

<aside>

Quaternion()

$(w, \vec{v})$ 인 사원수를 생성합니다. 벡터부에 해당하는 $\vec{v}$ 는 복사됩니다. 인자가 없다면 $(1, \vec{(0,0,0)})$ 인 단위 사원수로 초기화됩니다.

</aside>

Static methods

<aside>

Quaternion.angleAxis()

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

</aside>

<aside>

Quaternion.fromTo()

from 방향에서 to 방향로 향하도록 회전시키는 Quaternion 을 out 에 담아 돌려줍니다.

</aside>

<aside>

Quaternion.euler()

X+ 축에 대해 x deg 회전, Y+ 축에 대해 y deg 회전, Z- 축에 대해 z deg 회전하는 회전을 나타내는 Quaternion 을 out 에 담아 돌려줍니다. Quaternion.euler 로 생성한 회전은 오일러각을 사용했기 때문에 여전히 짐벌락(gimbal-lock) 현상이 존재함에 유의하시길 바랍니다.

</aside>

<aside>

Quaternion.toEuler()

사원수를 오일러각(Euler angles)을 나타내는 Vector3 로 변환합니다. 결과는 out 에 담아 돌려줍니다.

</aside>

<aside>

static Quaternion.mulQuat()

사원수곱 $(q_n \cdot q_{n-1}\cdot … \cdot q_1\cdot q_0)$의 결과를 나타내는 Quaternion 을 생성하여 돌려줍니다.

</aside>

<aside>

Quaternion.nlerp()

정규화된 시간 $t$ 에 대해, $q_{start}$ 에서 $q_{end}$ 까지 선형보간(Linear interpolation)한 후, 정규화(Normalize)시킵니다.

</aside>

<aside>

Quaternion.slerp()

정규화된 시간 $t$ 에 대해, $q_{start}$ 에서 $q_{end}$ 까지 구형보간(spherical interpolation)합니다.

</aside>

<aside>

Quaternion.dot()

사원수 $q0, \;q1$ 을 4차원 벡터로 생각하고, 내적 $\langle q0, q1\rangle$ 의 결과를 얻습니다. 결과는 number 입니다.

</aside>

Static properties

<aside>

Quaternion.identity

사원수곱의 항등원(identity)을 나타내는 Quaternion 을 생성하여 돌려줍니다.

</aside>

Instance methods

<aside>

Quaternion.clone()

사원수의 복사본을 돌려줍니다.

</aside>

<aside>

Quaternion.assign()

this 의 성분을 q 의 성분으로 설정합니다.

</aside>

<aside>

Quaternion.toString()

Quaternion 을 나타내는 string 을 돌려줍니다.

</aside>

<aside>

Quaternion.toMatrix4x4()

Quaternion 을 Matrix4x4 로 변환한 결과를 out 에 담아 돌려줍니다. 표준 기저 벡터 X+, Y+, Z+ 에 q 를 곱한 결과를 Matrix4x4 의 basisX, basisY, basisZ 로 사용합니다. basisW 는 $(0,0,0,1)$ 로 초기화됩니다.

</aside>