gluNewNurbsRenderer( ) ; gluNurbsProperty(); gluBeginNurbsSurface(); gluNurbsSurface(); gluEndNurbsSurface( ) ;

Две первых функции формируют новый NURBS-объект и задают способ его отображения. Следующие три функции используются для формирования поверхности. При работе с NURBS-кривыми вместо них следует использовать gluBeginNurbsCurve( ), gluNurbsCurve( ) и gluEndNurbsCurve().

В библиотеке GLU есть функции, которые позволяют выполнять операцию вырезания отверстий криволинейной формы в сформированной поверхности. "Вырезающие кривые" (Trimming curves) представляют собой замкнутые криволинейные контуры отверстий (рис. 10.40). В прикладной программе вырезающая NURBS-кривая формируется с помощью функции gluNurbsCurve( ). Можно сформировать и кусочно-линейный контур отверстия с помощью функции gluPwlCurve( ). Контуры отверстий формируются после вызова glNurbsSurfасе( ), причем соответствующие вершины задаются в операторных скобках - между вызовами функций glBeginTrim() и glEndTrim().

10.12.5. Квадратичные поверхности В составе библиотеки GLU OpenGL имеются функции формирования и отображения нескольких типов распространенных квадратичных поверхностей - дисков, цилиндров и сфер. В прикладной программе такие объекты могут обрабатываться так же, как и все прочие при-

Кривые и криволинейные поверхности

митивы, - можно масштабировать, сдвигать, поворачивать, закрашивать их и накладывать на них текстуру. Функции построения квадратичных поверхностей автоматически формируют нормали и координаты текстуры. В OpenGL выполняется их аппроксимация многоугольниками, причем в прикладной программе задается, сколько многоугольников должно быть использовано для аппроксимации.

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

GLUquadricObj *р; p=gluNewQuadric(); После этого в программе требуется задать параметры, определяющие вид объекта на экране. Если, например, планируется выводить проволочное изображение и текущий цвет, то следует вызвать функцию


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