4.4.4 기하 압축
고정소수점 압축은 특정 게임에서 오가는 정보의 두드러지는 특성을 이용해 비트 수를 절약하는 기법이다. 그런데 이것 또한 정보 공학 이론으로 설명할 수 있다는 점이 흥미롭다. 어떤 변수에 허용되는 값의 범위에 제약이 있다면, 더 적은 양의 비트로 그 정보를 표현할 수 있다. 이 기법은 어떤 자료형이든 그 내용에 대한 제약 사항을 알고 있으면 적용할 수 있다.
여러 가지 형태의 기하(geometry) 자료형이 이에 해당된다. 이 절에서는 특히 사원수(quaternion)와 변환 행렬(transformation matrix)에 대해 다루어 본다. 사원수는 네 개의 부동소수점 숫자로 구성된 자료형으로, 삼차원 공간에서 회전을 나타낼 때 유용하다. 사원수 사용법을 상세히 다루는 건 이 책의 내용을 벗어나지만, 4.8 더 읽을거리 절에 참고할 만한 정보가 있다. 이 절에서 중요하게 볼 내용은 바로 사원수로 회전을 표현할 때 정규화한다는 것으로 즉, 각 성분이 -1에서 1 사이 값이고 또한 각 성분을 제곱하여 모두 더한 값이 1이라는 사실이다. 제곱하여 더한 값이 1로 고정불변이므로, 사원수를 직렬화할 때는 네 성분 중 셋만 처리하고, 넷째 성분은 1비트로 부호만 표시하면 된다. 직렬화를 풀어 읽어 들일 때는 세 성분 값을 읽어 들여 제곱해 더한 다음, 더한 값을 1에서 빼면 넷째 성분을 살려낼 수 있다.