Преобразование экземпляра применяется в порядке, представленном на рис. 4.47. Объект обычно определяется в собственном фрейме, начало координат которого находится в центре масс объекта, а оси координат параллельны характерным ребрам объекта или его оси симметрии. Сначала устанавливаются размеры экземпляра, затем его сдвигают и поворачивают. Следовательно, преобразование экземпляра имеет вид М = TRS.
4.8. Суперпозиция преобразований Моделирование на основе преобразований экземпляров эффективно реализуется не только в системах с конвейерной архитектурой, но и в системах, работающих с дисплейными списками, о которых шла речь в главе 3. Описания сложных прототипов, которые используются в модели многократно, передаются на сервер только один раз в виде дисплейного списка. Отображение каждого экземпляра потребует только пересылки на сервер соответствующей матрицы преобразования экземпляра.
Пример выполнения поворота, который мы рассмотрим в данном разделе, продемонстрирует, как использовать углы поворотов вокруг осей координат для задания поворота вокруг произвольного вектора. Рассмотрим поворот куба, показанного на рис. 4.48. Для определения произвольного поворота в пространстве требуются три параметра: фиксированная точка преобразования (в качестве таковой выберем центр куба - точку р0), вектор, вокруг которого выполняется поворот, и угол поворота. Обратите внимание на то, что ни один из них не зависит от конкретного фрейма, а следовательно, мы специфицируем преобразование, не связываясь ни с какой системой координат. Но при формировании матриц аффинных преобразований нам придется привязаться к определенному фрейму.
Вектор, вокруг которого поворачивается куб, можно специфицировать разными способами, например, можно задать его двумя точками рі и р2: Обратите внимание на то, что порядок использования точек задает положительное направление вращения, и хотя на рисунке вектор и проходит через точку р0, имеет значение только его направление. Выполнение дальнейших операций облегчит нормализация вектора оси поворота- замена и вектором единичной длины, имеющим то же направление: