6. Повторяется вся процедура, начиная с шага 2.
Таким образом, каждая новая точка, созданная на шаге 3, включается в изображение и выводится на устройство отображения. Весь описанный процесс проиллюстрирован на рис. 2.1, где р0- исходная точка (см. шаг 1), а р, и р2- две точки, сформированные в процессе двух последовательных циклов описанного алгоритма.
Прежде чем приступить к разработке программы, весьма желательно представить себе, какой вид будет иметь изображение, полученное в результате применения этого алгоритма. Попробуйте нарисовать его вручную на листе бумаге - результат вас скорее всего удивит.
Ниже представлен возможный вариант графической программы построения узора.
main( ) {
initialize_the_system();
for(some_number_of_points) {
pt = generate_a_point(); display_the_point(pt);
}
cleanup();
}
Хотя в окончательном виде наша программа на OpenGL будет иметь несколько другой вид, но останется такой же простой. Процесс разработки программы будет прослежен поэтапно. Сначала сконцентрируем внимание на двух основных этапах - формирование точки и вывод ее на экран. Нужно ответить на два вопроса: "Как представить точки в пространстве?" и "Следует ли использовать двух-, трехмерное или другое представление?"
' В главе 4 мы рассмотрим эту же задачу в более общей постановке с использованием координатных фреймов.
Графическое программирование
2.1.1. Перьевой плоттер
Большинство графических систем первого поколения были двухмерными. В них использовалась концепция модели перьевого плоттера (pen-plotter model)2. Такое устройство формирует изображение на бумаге за счет перемещения пера, закрепленного на двух подвижных направляющих (рис. 2.2). Одна направляющая перемещается в продольном направлении (вдоль оси у), а другая - в поперечном (вдоль оси х). Специальный механизм поднимает и опускает перо. В опущенном состоянии перо при перемещении оставляет след на бумаге - этот след и формирует изображение. Такого рода устройства и поныне используются в графических системах при построении технических чертежей. Для программного управления графопостроителями применяются разнообразные пакеты API - такие как LOGO, GKS и PostScript. Хотя эти пакеты и отличаются друг от друга функциональными возможностями, но во всех используется та же самая идея формирования на носителе следа подвижного пера, т.е. фактически воспроизведения процесса ручного вычерчивания с помощью карандаша. Пользователь при этом имеет дело с участком плоскости, ограниченным размерами планшета.