Поделиться через


Функция gluEndTrim

Функции gluBeginTrim и gluEndTrim разделяют определение цикла обрезки non-Uniform Rational B-Spline (NURBS).

Синтаксис

void WINAPI gluEndTrim(
   GLUnurbs *nobj
);

Параметры

nobj

Объект NURBS (созданный с помощью gluNewNurbsRenderer).

Возвращаемое значение

Эта функция не возвращает значение.

Комментарии

Используйте gluBeginTrim , чтобы пометить начало цикла обрезки, и gluEndTrim , чтобы отметить конец цикла обрезки. Цикл обрезки — это набор сегментов ориентированной кривой (образующих замкнутую кривую), которые определяют границы поверхности NURBS. Эти циклы обрезки включаются в определение поверхности NURBS между вызовами gluBeginSurface и gluEndSurface.

Определение поверхности NURBS может содержать множество циклов обрезки. Например, если написать определение для поверхности NURBS, напоминающее прямоугольник с выбитыми отверстиями, определение будет содержать два цикла обрезки. Один цикл определяет внешний край прямоугольника; другой определяет пробивное отверстие. Определения каждого из этих циклов обрезки будут заключены в скобки парой gluBeginTrim / gluEndTrim .

Определение одного закрытого цикла обрезки может состоять из нескольких сегментов кривой, каждый из которых описывается как ряд сегментов линий, образующих линейную кривую (см . gluPwlCurve), как одну кривую NURBS (см . gluNurbsCurve) или как сочетание обоих в любом порядке. Единственными вызовами библиотеки, которые могут отображаться в определении цикла обрезки (между вызовами gluBeginTrim и gluEndTrim), являются gluPwlCurve и gluNurbsCurve.

Отображаемая область поверхности NURBS — это область в домене слева от кривой обрезки по мере увеличения параметра кривой. Таким образом, сохраненная область поверхности NURBS находится внутри цикла обрезки против часовой стрелки и вне цикла обрезки по часовой стрелке. Для прямоугольника, упомянутого ранее, цикл обрезки для внешнего края прямоугольника выполняется против часовой стрелки, а цикл обрезки для пробитого отверстия выполняется по часовой стрелке.

Если для определения одного цикла обрезки используется несколько кривых, сегменты кривой должны сформировать замкнутый цикл (то есть конечная точка каждой кривой должна быть начальной точкой следующей кривой, а конечная точка конечной кривой должна быть начальной точкой первой кривой). Если конечные точки кривой достаточно близки друг к другу, но не совпадают точно, они будут вынуждены совпадать. Если конечные точки недостаточно близки, возникает ошибка (см . gluNurbsCallback).

Если определение цикла обрезки содержит несколько кривых, направление кривых должно быть согласованным (то есть внутри должно находиться слева от всех кривых). Вы можете использовать вложенные циклы обрезки, если ориентация кривой чередуется правильно. Кривые обрезки не могут быть самопересекающимися и не могут пересекаться друг с другом (или возникают ошибки).

Если сведения об обрезке для поверхности NURBS не предоставлены, рисуется вся поверхность.

Примеры

Этот фрагмент кода определяет цикл обрезки, состоящий из одной кусочной линейной кривой и двух кривых NURBS:

gluBeginTrim(nobj); 
    gluPwlCurve(. . ., GLU_MAP1_TRIM_2); 
    gluNurbsCurve(. . ., GLU_MAP1_TRIM_2); 
    gluNurbsCurve(. . ., GLU_MAP1_TRIM_3);  
gluEndTrim(nobj);

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Glu.h
Библиотека
Glu32.lib
DLL
Glu32.dll

См. также раздел

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve