사원수 $q0, \;q1$ 을 4차원 벡터로 생각하고, 내적 $\langle q0, q1\rangle$ 의 결과를 얻습니다. 결과는 number
입니다.
여기서 $q_0 \cdot q_1$ 는 사원수곱 Quaternion.mulQuat() 을 나타내는 기호이기에, 사원수 간의 내적은 대신$\langle q_0, \; q_1\rangle$ 로 표현합니다.
Quaternion.dot(q0, q1)
q0
, q1
내적연산에 참여할 Quaternion
내적 $\langle q0, q1\rangle$ 의 결과를 나타내는 number
.
사원수 $q$ 는 스칼라 $a$ 와 세 개의 허수부 $i, j, k$ 로 이루어져 있다고 했습니다. 그리고 Quaternion.mulQuat() 등에서 사원수곱을 직관적으로 나타내기 위해서 허수부 $bi + cj + dk$ 를 벡터 $\vec{v} = (b,c,d)$ 처럼 나타냈습니다. 그렇다면 반대로 사원수를 4차원 벡터 $q = (a,b,c,d)$ 로 표현할 수도 있지 않을까요?
물론 벡터로 나타냈다고 해서, 완전히 Vector4
로 취급하자는 것은 아닙니다. 편의상 그렇게 쓰기만 하겠다는 것이죠. 사원수곱 $q_1 \cdot q_0$ 은 당연히 $(a + bi + cj + dk) \cdot (\acute{a} + \acute{b}i + \acute{c}j + \acute{d}k)$ 처럼 사원수의 정의대로 해주어야 합니다. 그렇다면 사원수를 4차원 벡터로 나타내서 뭘 하겠다는 걸까요?
첫번째는 사원수곱을 다루다보면, 내적 $\langle q_0, \;q_1\rangle$ 식이 자주 나타나기 때문입니다. 대표적인 예시로 사원수의 크기의 제곱 $\|q\|^2 = q\cdot q^*$ 를 구하는 식을 전개하면, 스칼라값만 남게 되는데 이 값이 $w^2 + \vec{v}\cdot\vec{v}$ 같은 형태이기 때문입니다. 보면 알겠지만 이건 사원수를 4차원 벡터로 생각한다면, 간단하게 내적 $\langle q, \; q\rangle$ 으로 적을 수 있으니까요.
두번째는 사원수가 대척점(antipodal) 성질을 가지기 때문입니다. 간단히 $q$ 와 $-q$ 는 같은 회전을 나타낸다는 것이죠. 사원수 $q$ 와 $-q$ 를 4차원 벡터로 생각하고 보도록 할까요? 이 경우 두 벡터의 방향은 서로 반대라는 것을 알 수 있습니다:
$$ q = (a,b,c,d) \\ -q = (-a, -b, -c, -d) \\\;\\
\langle q, -q\rangle = \|q\|\cdot\|-q\|\cdot cos\theta $$
내적의 기하학적인 의미는 $\|u\|\cdot\|v\|\cdot cos\theta$ 이므로, 사원수 $q$ 가 크기가 $1$ 인 단위사원수라면, 내적의 결과는 두 벡터의 사이각 $\theta$ 에 대한 코사인 $cos\theta$ 값이 되겠네요. 즉 방향이 반대인 $q, \;-q$ 의 내적은 $cos(180^{\circ}) = -1$ 이 결과가 되겠네요.