В разделе 5.3 «Трехмерные аффинные преобразования» идеи раздела 5.2 «Введение в преобразования» распространяются на трехмерные аффинные преобразования; здесь показано, что все основные свойства, имевшие место для двух измерений, сохраняются и для трех. Однако трехмерные преобразования - особенно трехмерные повороты - более сложны, чем их двумерные аналоги, и их труднее представить наглядно, поэтому особое внимание уделено описанию и сочетанию различных поворотов.

В разделе 5.4 «Изменения систем координат» обсуждается взаимосвязь между преобразованием точек и преобразованием систем координат. В разделе 5.5 «Использование аффинных преобразований в программах» показано, как управлять аффинными преобразованиями в программах, если доступен OpenGL, а также насколько упрощаются многие операции, необходимые в графических программах, с применением этих преобразований. Моделирующие преобразования и использование «текущего преобразования» проиллюстрированы целым рядом примеров. В разделе 5.6 «Рисование трехмерных сцен с применением OpenGL» рассматривается моделирование трехмерных сцен и их рисование при помощи OpenGL. Определено понятие «камеры», которая устанавливается и ориентируется так, чтобы она сделала нужный моментальный снимок сцены. В разделе также рассматривается использование преобразований для изменения размеров и расположения объектов согласно задуманной сцене. Моделирование и визуализация трехмерных сцен показана на нескольких примерах, приведен необходимый для этого программный код. Кроме того, в данном разделе вводится язык описания сцен (Scene Description Language - SDL) и показывается, как писать приложения, которые могут нарисовать любую сцену, описанную на этом языке. Такое воспроизведение требует разработки ряда классов для поддержки чтения и анализа SDL-файлов, а также для создания списков объектов, подлежащих визуализации. Эти классы доступны на web-сайте данной книги.

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


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