Рассмотрим, что получится в программе анимации, если попытаться организовать движение объекта при переходе от одной ориентации к другой. Подходящую матрицу поворота можно определить в виде произведения матриц поворота вокруг трех осей:
R(9) = Rv(6r) КД9,.) R,(9..).
Если цель разработчика- организовать на экране плавное вращение объекта между заданными крайними положениями, то нужно на каждом шаге использовать малые приращения углов. Но такая последовательность не будет восприниматься наблюдателем как плавное вращение - он будет видеть вращения вокруг каждой из трех осей.
Если компилятор не поддерживает тип Boolean, можно воспользоваться директивой tdefine bool int и затем определить константы true и false как 1 и 0 соответственно
4.10. Взаимодействие пользователя с трехмерными графическими приложениями 201
При описании работы с трекболом было показано, как можно достаточно плавно поворачивать куб из одного положения в другое. Для этого использовалось соответствие между двумя ориентациями и двумя точками на окружности единичного радиуса. Плавный переход от одной ориентации к другой соответствует движению по большой окружности на поверхности сферы. При этом ось вращения - это нормаль к плоскости окружности, которая определяется двумя точками на окружности и центром сферы. Если плавно увеличивать этот угол, наблюдатель увидит плавное вращение.
Сложности при реализации этого метода проистекают из использованного нами математического аппарата, который "привязан" к некоторой системе координат. Кватернионы (quaternions) - это математический аппарат, связанный с комплексными числами, который позволяет использовать альтернативные методы описания вращения. Хотя этот аппарат и не так интуитивно понятен, как тот, который использовали мы, он имеет существенные преимущества в приложениях, где требуется анимация изображения. Другие примеры организации плавного вращения будут рассмотрены в главе 8.
4.11. Резюме В этой главе мы представили две различные, но дополняющие друг друга точки зрения на математический аппарат, пригодный для решения задач компьютерной графики. Одна из них состоит в том, что для глубокого понимания сути выполняемых в графической системе операций необходимо использовать математические абстракции объектов. Другая же состоит в том, что базовым для реализации графической системы должен быть аппарат преобразований, в частности преобразований в однородных координатах.