Используемый математический аппарат заимствован из векторного анализа и линейной алгебры. Однако последовательность описания этого аппарата, которая определяется задачами компьютерной графики, весьма непривычна для большинства студентов. Как правило, сначала студенты знакомятся с линейной алгеброй, а затем с векторными пространствами (как приложение к изучению «-мерных пространств R"). Мы же, наоборот, сначала рассмотрели представление объектов в математических пространствах, которое привело нас к использованию линейной алгебры в качестве инструмента для реализации абстрактных типов.

При изложении мы старались следовать подходу, независящему от координат. Сделано это было по двум причинам. Во-первых, желательно показать, что все базовые концепции геометрических объектов и преобразований не зависят от способа их представления. Во-вторых, все более популярными становятся языки объектно-ориентированного программирования, и большинство прикладных программистов будут работать непосредственно с объектами, а не с их представлениями. В литературе, которая упоминается в следующем разделе, имеется множество примеров геометрических систем программирования, демонстрирующих потенциальные возможности такого подхода.

Однородные координаты - это один из прекрасных примеров огромных возможностей математической абстракции. Используя абстрактное математическое пространство - аффинное пространство, - оказалось возможным создать исключительно эффективный программный инструмент для манипулирования графическими объектами.

В последних разделах главы описаны те преобразования, которые поддерживаются средствами OpenGL, и обсуждается методика их суперпозиции для получения произвольных аффинных преобразований. Принцип комбинированного использования небольшого набора базовых преобразований для определения преобразования любой сложности лежит в основе подавляющего большинства графических систем. На его использование ориентированы все упражнения в конце настоящей главы. В главе 5, взяв за основу эту же методику, мы рассмотрим процесс визуализации трехмерных сцен, а в главе 8 покажем, как она используется при иерархическом моделировании объектов.


⇐ Предыдущая| |Следующая ⇒