Мы используем терминологию абстрактных типов данных для того, чтобы подчеркнуть отличие между объектом как таковым и его частным представлением. Дальнейшее обсуждение покажет, что математические соотношения естественным образом вытекают из нашего желания манипулировать немногими базовыми геометрическими типами данных. Математический аппарат, который будет представлен в этой главе, относится к таким областям математики, как векторные пространства, геометрия и линейная алгебра. Формальное изложение математики векторных пространств и матричной алгебры читатель найдет в приложениях Б и В соответственно.
Следуя подходу, декларированному в начале этой книги и уже реализованному в предыдущих главах, для иллюстрации основных теоретических положений будет разработана несложная программа, в которой мы постараемся продемонстрировать методику реализации средствами графического API основных концепций геометрических преобразований. Пример, предложенный вашему вниманию в этой главе, имеет дело с представлением и преобразованиями простого геометрического объекта- куба. Мы также продемонстрируем, как задавать параметры преобразований в интерактивном режиме.
4.1. Скаляры, точки и векторы
Компьютерная графика имеет дело со множеством геометрических объектов, таких как точки, многоугольники и многогранники. Как уже было показано в предыдущих главах на примере двухмерных приложений, все разнообразие геометрических объектов можно свести к ограниченному множеству простейших сущностей. Нам понадобятся для этого три базовых типа - скаляры, точки и векторы. Существуют, по крайней мере, три варианта определения этих сущностей, в зависимости от того, с какой точки зрения их рассматривать - чисто математической (формальной), геометрической или с точки зрения программной реализации. В конечном счете нам придется иметь дело со всеми тремя вариантами, хотя на первый взгляд и кажется, что они мало связаны друг с другом.
Несмотря на то что существует огромное множество примеров каждого из трех базовых типов, в этой главе мы рассмотрим только по одному представителю каждого типа. Как бы там ни было, но для нас наибольшую важность представляет вопрос об отличиях между математическим определением каждого типа и его частной реализацией, что требует основательного знакомства с математикой, лежащей в основе дальнейших рассуждений.