Френсис Хилл

Рис. 5.57. Проектирование стола Полный код этой программы приведен в листинге 5.6. Отметим, что в ней использован сплошной (solid), а не каркасный вариант каждой формы, например glutSolidSphereC). Проверьте соответствующие преобразования, примененные для ориентации и позиционирования каждого объекта в сцене. ОтГлава 5. Преобразования объектов дельно проверьте модель переключателя. Этот пример был разработан с целью разжечь ваш аппетит, чтобы вы попробовали составить свои сцены, экспериментируя с преобразованиями.

Приведенный код демонстрирует также различные операции, которые необходимо проделать для создания изображений с тенями. Нужно указать положение и свойства источника света, а также специальные свойства поверхностей объектов, которые описывают, как эти поверхности отражают свет. Так как процессы затенения рассматриваются в главе 8, сейчас мы только покажем различные вызовы функций; а использование их в соответствии с данным образцом и создаст затенение.

Листинг 5.6. Полная программа для рисования сцены с затенением

linclude <windows.h>

^include <fostream.h>

^include <gl/61.h»

^include <gl/Glu.h>

linclude <gl/glut.h>

//«««««<«« wall »»»»»»»»

void walKdouble thickness)

{

// draw thin wall with top - xz-plane.corner at origin // рисуем тонкую стенку e верхней плоскостью xz // и с углом в начале координат glPushMatnxO:

glTranslated(0.5. 0.5 * thickness. 0.5): glSealedd.O. thickness. 1.0): glutSolidCube(l.O): glPopMatrixO:

}

//««««««««« tableLeg »»»»»»»»»»

void tableLeg(double thick, double len)

{

glPushMatrixO:

gl Trans!ated(0. len/2. 0):

glScaled(thick. len, thick):

glutSolidCube(l.O):

glPopMatrixO:

}

//««««««««««< jack part »»»»>»»

void jackPartO

{

// draw one axis of the unit jack - a stretched sphere


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