□ Начертить дуги и круги.
□ Описать параметрически заданные кривые и рассмотреть способы их вычерчивания.
Компьютеры бесполезны. Они могут только давать вам ответы.
Пабло Пикассо Даже если вы на верной дороге, вас задавят, если вы просто сидите на ней.
Уилл Роджерс (Will Rogers)
В разделе 3.1 «Введение» вводятся понятия мировых координат (world coordinates) и мирового окна (world window).
В разделе 3.2 «Мировые окна и порты просмотра» описывается преобразование из окна в порт просмотра. Такое преобразование делает графические приложения проще, так как позволяет программисту работать в удобной системе координат, имея в то же время возможность отображать нужным образом все картинки на экране. В этом разделе также рассматривается вопрос, как программисту (или пользователю) следует выбирать окно и порт просмотра для получения желаемых рисунков. Основное правило: форматные соотношения окна и порта просмотра должны быть одинаковыми, иначе возможно искажение результатов. Некоторые способы выбора могут быть автоматизированы.
3.1. Введение В разделе 3.3 «Отсечение линий» строится классический алгоритм отсечения (clipping algorithm), который удаляет все части изображения, выходящие за пределы мирового окна.
В разделе 3.4 «Разработка класса Canvas» вводится полезный класс С++ под названием Canvas (полотно), который инкапсулирует множество деталей инициализации и обработки переменных, необходимых для программы рисования. Рассмотрена его реализация в среде OpenGL. Программист может использовать инструменты Canvas, чтобы создавать сложные изображения и быть уверенным в том, что основные данные защищены от случайной порчи.
В разделе 3.5 «Относительное рисование» рассматриваются подпрограммы относительного рисования и так называемая «черепашья графика», которая добавляет к инструментарию программиста ряд удобных методов. В разделе 3.6 «Фигуры на основе правильных многоугольников» исследуется рисование некоторых любопытных рисунков на базе правильных многоугольников, а раздел 3.7 «Рисование окружностей и дуг» посвящен рисованию дуг и окружностей. В конце главы приведено несколько практических упражнений, включающих, в частности, разработку класса Canvas для программных сред, отличных от OpenGL, в которых все детали метода отсечений и преобразования из окна в порт просмотра должны быть сконструированы в явном виде.