Френсис Хилл

2.3. Создание рисунков из линий Листинг 2.8. Вычерчивание линейного графика функции

glBegin(GL_LINE_STRIP):

for(Gldouble х - 0; х < 4.0: х +- 0.005)

{

define func // задаем функцию glVertex2d(A * х + В. С * func + 0):

}

glEndO: gl Flush: Пример 2.3.2. Рисование ломаных линий, заданных в файле Наиболее интересные изображения, которые можно создать из ломаных линий, содержат значительное количество отрезков прямых. Описание этих ломаных удобно записывать в файл, чтобы при желании изображение можно было бы нарисовать снова. (Ряд интересных примеров можно найти в Интернете; см. введение к данной книге.)

Не составляет труда написать подпрограмму, рисующую ломаные, записанные в файл. Рисунок 2.12 - это пример изображения, которое можно нарисовать таким способом.

Рассмотрим файл dino.dat, содержащий набор ломаных в следующем формате (комментарии не являются частью файла).

Френсис Хилл

Рис. 2.11. График математической формулы

Френсис Хилл

Рис. 2.12. Рисование ломаных линий, записанных в файле

// number of polylines in the file

// число ломаных в файле

// number of points in the first polyline // число точек в первой ломаной 169 118

Глава 2. Начальная стадия: рисование фигур

// first point of first polyline // первая точка первой ломаной 174 120

// second point of first polyline // вторая точка первой ломаной 179 124 178 126 5

// number of points in the second polyline // число точек во второй ломаной 298 86

// first point of second polyline

// первая точка второй ломаной

304 92

310 104

314 114

314 119

32 435 10 439

и т.д.

(Полностью данный файл доступен на web-сайте к этой книге. См. введение.) В листинге 2.9 приведена подпрограмма на С++, которая открывает такой файл и затем рисует все ломаные линии, которые тот содержит. Читается файл с именем, содержащимся в строке fileName, после чего рисуется каждая ломаная линия. Данную подпрограмму можно использовать вместо myDisplayO в листинге 2.7 в качестве функции обратного вызова на событие перерисовки redraw. Величины A,B,CnD следует выбрать так, чтобы ломаные линии имели нормальный масштаб. Мы изложим общие принципы такого выбора в главе 3.


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