gluBeginTrim 函数

gluBeginTrimgluEndTrim 函数 (NURBS) 剪裁循环定义分隔非一致性有理 B 样条。

语法

void WINAPI gluBeginTrim(
   GLUnurbs *nobj
);

参数

nobj

使用 gluNewNurbsRenderer) 创建的 NURBS 对象 (。

返回值

此函数不返回值。

注解

使用 gluBeginTrim 标记剪裁循环的开始,使用 gluEndTrim 标记剪裁循环的结束。 剪裁循环是一组定向曲线段, (形成定义 NURBS 图面边界的闭合曲线) 。 在调用 gluBeginSurfacegluEndSurface 之间,可以在 NURBS 图面的定义中包括这些剪裁循环。

NURBS 图面的定义可以包含许多剪裁循环。 例如,如果为 NURBS 图面编写一个定义,该定义类似于一个打孔的矩形,该定义将包含两个剪裁循环。 一个循环将定义矩形的外边缘;另一个将定义打孔。 每个剪裁循环的定义将由 gluBeginTrim / gluEndTrim 对括起来。

单个闭合剪裁循环的定义可以包含多个曲线段,每个曲线段都描述为形成线性曲线的一系列线段 (请参阅 gluPwlCurve) ,作为单个 NURBS 曲线 (看到 gluNurbsCurve) ,或者以任意顺序将两者组合在一起。 在对 gluBeginTrimgluEndTrim) 调用之间,可以出现在剪裁循环定义 (的唯一库调用是 gluPwlCurvegluNurbsCurve

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