glVertex2i(60. 120):

glVertex2i(60. ПО): glEndO:

// draw the door // рисуем дверь

// draw the window // рисуем окно }

Данный подход не является достаточно гибким. Координаты каждой концевой точки «вмонтированы» внутрь кода, вследствие чего функция hardwirededHouseO может рисовать только единственный домик одного размера, размещенный единственным образом. Большей гибкости можно достигнуть, если параметризовать этот рисунок и передавать значения этих параметров в подпрограмму. Таким способом мы можем рисовать семейства объектов, отличающихся различными значениями параметров. Листинг 2.11 демонстрирует такой подход. Параметры задают расположение верха крыши, а также ширину и высоту домика. Такие детали, как рисование трубы, двери и окна, оставлены для вас в качестве упражнения.

Листинг 2.11. Рисование параметризованного домика

void parameterizedHouse(GLintPoint peak. Glint width, GLint height)

// the top of house is at the peak;

// верхняя точка домика;

// the size of house

// is given by the height and width

// размер домика задается его высотой и шириной

{

glBegin(GL_LINE_L00P):

glVertex2i(peak.x. peak.y): // draw shell of house // рисуем каркас домика

glVertex21(peak.x + width / 2. peak.y - 3 * height /8):

glVertex2i(peak.x + width / 2. peak.y - height):

glVertex2i(peak.x - width / 2. peak.y - height);

glVertex2i(peak.x - width / 2. peak.y - 3 * height /8): glEndO:

drain/ the chimney in ihe same fashion

II рисуем трубу таким же способом

draw the door

II рисуем дверь

draw the window

II рисуем окно

}

Данная подпрограмма может быть использована для того, чтобы нарисовать целую «деревню», как это показано на рис. 2.14, посредством последовательных вызовов функции parameterizedHouseO с различными значениями параметров. (Каким образом один из домиков оказался «перевернутым»? Все ли домики с этого рисунка можно нарисовать с помощью данной подпрограммы?)

2.3. Создание рисунков из линий

Френсис Хилл

Рис. 2.14. «Деревня» из домиков, нарисованных с помощью подпрограммы parameterizedHouse() Пример 2.3.4. Создание рисовальщика ломаных


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