$(w, \vec{v})$ 인 사원수를 생성합니다. 벡터부에 해당하는 $\vec{v}$ 는 복사됩니다. 인자가 없다면 $(1, \vec{(0,0,0)})$ 인 단위 사원수로 초기화됩니다.
new Quaternion()
new Quaternion(w, v)
w
스칼라부 $w$ 를 나타내는 number
. 인자를 주지 않으면 $1$ 로 초기화됩니다.
v
벡터부 $\vec{v}$ 를 나타내는 Vector3
. 인자를 주지 않으면 $\vec{(0,0,0)}$ 으로 초기화됩니다. 인자로 넘긴 v
는 복사됩니다.
사원수 $q$ 는 하나의 스칼라 $a$ 와 세개의 허수 $i, j, k$ 로 구성됩니다. 즉 사원수 $q$ 는 복소수와 비슷하게 다음처럼 나타낼 수 있습니다:
$$ q = a + bi + cj + dk $$
세 개의 허수 $i, j, k$ 는 제곱하면 $-1$ 이 되지만, 정의상 서로 다른 허수 $i\neq j \neq k$ 입니다. 또한 사원수의 곱셈이 교환법칙이 성립되지 않도록 다음의 규칙을 정의했습니다:
$$ i^2 = j^2 = k^2 = -1 \\ ijk = -1 \\ $$
$(ij)\cdot k = -1$ 이므로, $ij = k$ 이어야지 위 규칙을 만족하겠군요. 그렇다면 $ji$ 는 어떻게 될까요? $ijk = -1$ 이므로, $j\cdot(jk)$ 로 치환할 수 있습니다. $j^2 = -1$ 이므로 $ji = -k$ 가 됩니다.
$ij$ 가 $ji$ 처럼 순서가 달라지니 벡터의 외적(outer product)처럼 부호가 달라지며, 교환법칙을 만족하지 않음을 알 수 있습니다. 실제로 사원수곱은 외적(outer product)이 포함되어 있어, 교환법칙이 성립되지 않습니다. 사원수를 스칼라부 $w$ 와 벡터부 $\vec{v}$ 로 표현하는데, 이에 대해서는 Quaternion.mulQuat() 를 읽어보시길 바랍니다.