�� ���� ������ ���ǵ� Game Programming Gems 3 �ѱ�����(���� ��, ������ȭ��)�� �Ϻ��Դϴ�. �� �ۿ� ���� ��� �Ǹ��� ������ȭ�簡 ������ ������, ���� ��� ���̴� �� ����Ʈ �Խø� ����� ��� ������ ������� �����Ǿ� �ֽ��ϴ�. �� ���� ���� ���� ���� �����̹Ƿ� ��Ÿ�� ������ ���� �� �ֽ��ϴ�. ���� �� �������� �Ѱ� ��, ������ ���̿� �μ�� ���¿ʹ� �ٸ� �� �ֽ��ϴ�. ���� å������ ǥ�� ������ �� �� ��Ȯ�� ���·� ǥ�õ� ���̸� ��/��ǥ ���� ������ ������ �ѱ�ȭ�� ���Դϴ�. Game Programming Gem 3 �ѱ����ǿ� ���� ������ GPG ���͵�(http://www.gpgstudy.com/)���� ���� �� �ֽ��ϴ�. |
���ó��� ��ǻ�� ���ӵ��� ���� ���� �ִϸ��̼� ������ ����ϸ�, �� �ִϸ��̼� �����ӿ� ���̴� �� �� ���� �κ��� ������ ȸ���� �Һ�ȴ�. ȸ�� �����ʹ� �Ϲ������� �����(quaternion, ����) ���·� ����Ǵµ�, �� �ۿ����� float �� ��¥�� ������� �ϳ��� 32 ��Ʈ ������ �����ϴ� ������� ����, �ȴ�.
�ϳ��� ����� Q(x, y, z, w)�� �ϳ��� ȸ�� ����� ǥ���� �� �ִ�. ��� ȸ�� ��ĵ��� �� A(X, Y, Z)�� ���� ���� θ�� ȸ���� �ǹ��Ѵٰ� �� ��, �� ȸ���� ���� ������� ������ ����.
���⼭,
����� Q(x, y, z, w)�� ����� Q'(-x, -y, -z, -w)�� ������ ȸ���� �ǹ��Ѵٴ� ���� �����ؾ� �� ���̴�. �̴� �� A�� ���� ���� θ�� ȸ���� �� -A�� ���� ���� -θ�� ȸ���� �����ϱ� �����̴�. ����, �� �ۿ����� ��� ��������� ����ȭ�� ���̶�� �����Ѵ�. ��, �� ���� ��� ����� Q(x, y, z, w)�� ������ �����Ѵ�.
������� �� ������ �ϳ��� ����Ʈ�� ���� �� �ִٸ� ������� 32 ��Ʈ�� ������ �� �ִ�. ���� ������ ���� �ϸ� ���е��� ������ ���ۿ� ����. ���� ������� ����ȭ�Ǿ� �ִٴ� ���� �̿��ؼ� �� ���� �� �ϳ��� �����Ѵٸ� ���е��� �ø� �� �ִ�(���� ���� �� ���� ����ٰ� �ؼ� �ּһ��(smallest three)�̶�� �θ���). �� ���� ���е��� �־����� ������ �� ������ ����� �� �ִ�. ���ٸ� � ������ �����ؾ� �ұ�? ���밪�� ���� ū ������ �����ϸ� ������ ���鵵 �� �۾�����. ������, �ϳ��� ��������� ���� ū ���� ������ ������ �� ���е� �� 1/sqrt(2)�� �Ѵ� ���� �������� �ʴ´�. ������ ���� ������ �����غ��� �� ������ ������ �� ���� ���̴�. ����ȭ�� ��������� �� ������ ���� ������ ���� 0�̶�� �ϸ�(���� ��� Q(v, v, 0, 0)) �� ��°�� ū ������ �� ���� ū �����̴�. �� ������� ����ȭ�ϸ� 0�� �ƴ� ����, �� ���� ū ������ 1/sqrt(2)�� �Ǹ�, ���� ������ �� �� �� 1/sqrt(2)�� �Ѵ� ������ �������� �ʴ´�.
���� ū ������ ��ȣ�� ������ �ʿ䰡 ����. �� 0���� ũ�ٰ� �����ϸ� �DZ� �����̴�. ���� ū ������ ���� ��쿡�� ���� ���� ������ ����� ��ü�� ��ȣ�� �ٲٸ� �ȴ�.
���� ���� (x, y, z)�� �� ���� ���� ��(yaw)�� ��ġ(pitch)������ ǥ���� �� �ִ�. ���� �� �ش��ϴ� ������� (��, ��ġ, w)�� ���� �� �ִ�. (x, y, z)�� ��� ��ġ�� �����ϸ� ���̿� ���� ������ �������, ������� ����ȭ�Ǿ��ٰ� �����ϹǷ� w�� ���ؼ� ���̸� �����ϴ� ���� �����ϴ�. w�� �� ���̶�� �����Ѵٸ� w�� ��ȣ ���� ������ �ʿ䰡 ����. ���� ���� �ƴ϶��, ���� ���� ���� ������ ����� ��ü�� ��ȣ�� ������ �����ϸ� �ȴ�.
���� ���� ��� ��ġ�� ������ �� �� ���� ������, ��ȯ�� ���͵��� ���鿡 ���� �յ��ϰ� �л���� �ʰ� �� �ؿ� ������ ������ ���δٴ� ���̴�. ������ ��ġ�� π/2�̰� ���Ͱ� �� ���� �ٷ� ����Ű�� �ִٸ�, ��� �������� �ʾƵ� �ȴ�. ���� ������ ��ġ�� 0�̰� ���Ͱ� ������ ���� ���� �ִٸ�, ���� ���� �� ������ �����ؾ� �Ѵ�. ���� ���� n ��Ʈ�� �����Ѵٰ� ����. �� ���� ����� ������ ���鿡 �յ��ϰ� ������Ű��, �� ���� (x, y, z) �Ǵ� (��, ��ġ)�� ���� ���̺��� �����ϰ�, �� ���̺��� ���� n ��Ʈ ������ �����ϴ� ���̴�. �̷��� ����� n�� ���� ������ ��ȿ�ϳ�, n�� Ŀ������ ���̺��� Ŀ���ٴ� ������ ������ �ִ�.
������ ���� ���̺� ���� ���� ���� ���ڵ��ϴ� ȿ������ ����� �����Ѵ�. �켱 x, y, z�� ��ȣ���� ���������� �����صΰ�, �� �ĺ��ʹ� x, y, z�� ��� ���̶�� �����Ѵ�. �̷��� �ϸ� ���� ������ ������ 8���� 1�� ����� �� �ִ�. �������δ�, �� 8�б��� ���鿡 ��ȣ�� �ű��(�� 2.4.1).
�� 2.4.1 8�б����� ���鿡 ��ȣ�� �ű��.
�� 2.4.1�� ����, ���� �����ڸ��� ������ ���������� �� �� �ִ�. �̷��� Ư¡�� �̿��ϸ� ���ڵ��� ��ȣ e�� �ش��ϴ� ��(row)�� ��(column)�� �˾Ƴ� �� �ִ�.
row = floor(sqrt(e)); column = e - row*row;
���� ������ ��ġ�� ���ȣ��, �並 ����ȣ�� �ؼ� e�� ���ϸ� ��������� �ϳ��� ���� ���� �ϳ��� n ��Ʈ ������ ������ �� �ִ�. �̷��� ������� �ָ��� ����, �ؿ����� ��� �� ���鵵 ������� ������ ���������� ������ �� ������ ����� �������ٴ� ���̴�.
�� ���ݱ��� �̾߱��� ������� ������ ���� �̾߱��غ���.
�ּһ���� �ϳ��� ������� 32 ��Ʈ�� ����ϰ� �����Ѵ�. 32 ��Ʈ �� �� ��Ʈ�� ���ܵ�(���� ū) ������ �������� ����ϰ�, ������ 10 ��Ʈ���� ������ �� ���е��� �����Ѵ�. ����� ���е� ��� ���� [-1/sqrt(2), 1/sqrt(2)] �ȿ� ���Ƿ�, �� ������ [0, 1023]���� �����ؼ� �� ������ ���� ������ �����ϸ� �ȴ�.
�پ��� ��Ʈ �Ҵ� ��ĵ��� ������ �� ���, w�� 11 ��Ʈ�� �Ҵ��ϴ� ��� ���� �� ������� �� �� �־���. x, y, z�� ��ȣ���� �� 3 ��Ʈ�� �����ϰ�, ������ 18 ��Ʈ�� ��� ��ġ�� �����Ѵ�. ��� ��ġ�� �ϳ��� ������ ��ȯ�Ѵٸ� 512���� ������ ������ �� �ִ�. �ƴϸ�, ��� ��ġ�� ���� 9 ��Ʈ�� ������ ���� �ִ�. ��� ��ġ ��� ������ [0, π/2]�̹Ƿ� �� ������ [0, 511]�� �����ؼ� ������ �����ϸ� �ȴ�.
��� ��ġ�� �ٽ� ���ͷ� �����Ϸ��� �� ��ο� ���� ���ΰ� �ڻ��� ����� �ʿ��ϴ�. �� �� [Edwards00]�� ���� ���� ���� �ٻ縦 ����ϸ� �ӵ��� �ø� �� ���� ���̴�. ����, ��� ��ġ�� �� [0, π/2]�� ���ϹǷ� �� ������ �°� �ٻ縦 ����ȭ�ϴ� �͵� ���� �����̴�. ���Ϸ�(Taylor) ���� π/4�� ����(0�� �ƴ϶�) �����ϰ� [0, π/4] ������ ������ �����(Lagrange) ���� ���� ǥ�� ����� ����� ���� �ִ�. 5�������� ���Ϸ� ���� 4, 5�������� ����� ���� ����ϴ�. 4�� ����� ���� ���� �� ������ ������ ���е��� ����� �������� �ȴ�. ���� 5�� ����� ���� 5�� ���Ϸ� ������ �� �����ϴ�.
���ڰ� ������ ���� Blade II�� �ִϸ��̼� �����ʹ� ���������� ����Ǿ� �����Ƿ� ��κ��� ��������� ���� ���� ������ ȸ���� ǥ���Ѵ�. ȸ������ θ�� �� �� ������� ��Į�� ���� w�� cos(θ/2)�̹Ƿ�, θ�� ���� �� w�� 1�� �ſ� ������. �̴� ������� ���������� ȸ������ ������ ��쿡�� ��� ���� ���̴�(�ڻ��� �Լ��� ���� ������). 1�� ����� ������ ���� �����ϰ� �����ϱ� ���� ����� �����, w ��� sqrt(1-w)�� �����ϰ� ������ Ǯ �� w�� �ٽ� �����ϴ� ���̴�.
�� ���� ����� ǰ���� �����ϱ� ����, Blade II�� ��������� �ڷ�� ����ߴ�. ���� ����� �̷���. �ڷ��� �� ����� Q�� �����ؼ� �� �ٸ� ����� Q'�� ���, Q�� Q'�� ��ĵ�� ��ȯ�� �� Q�� ��ȯ�� ���� Q'�� ��ȯ�� �� ������ �Ÿ��� ����Ѵ�. ���� �Ÿ��� ���� ����� ������ �����Ѵ�. ���� �� ����� ���� ���� �ӵ��� �����Ѵ�. �� 5.4.2�� Blade II�� ������ �ڷῡ ���� �� ���� ����� ����� ������ �����ְ� �ִ�. �ع��� ���� �ٻ� ����� 5�� ����� �����̴�.
���� �ð� �ع����� ���ڵ��� (��, ��ġ)�� w �ִ� ���� ������ ǥ���� (��, ��ġ, w) �ּһ�� ��� ����
�� 2.4.2 Blade II ����� �ڷḦ �̿��� ���� ������� ������� ����
��ġ �ڷẸ�ٴ� ���� ���� ij���͵��� ������ �����ϴ� ���� �̷� ���� ����鿡 ���� �� �� �������� �� ����� ���̴�. Blade II�� ��� �������� ���븦 ���� �����Ǵ� ��Ȳ�� ������� �ߴ�. Ư�� ij���Ͱ� �� ����(���� ��)�� ��� �ִ� ��� ������ �ſ� �Ǵ�. �ּһ���� ���� �ع��� ����� �� ���� ���� ������ ������ �ִ�.
�� ���� ���̵� �����ϴ� �� ������ �� Jan Svarovsky�� Mike Diskett���� ������ ���� ���Ѵ�.