gluBeginTrim 函数
gluBeginTrim 和 gluEndTrim 函数 (NURBS) 剪裁循环定义分隔非一致性有理 B 样条。
语法
void WINAPI gluBeginTrim(
GLUnurbs *nobj
);
参数
-
nobj
-
使用 gluNewNurbsRenderer) 创建的 NURBS 对象 (。
返回值
此函数不返回值。
注解
使用 gluBeginTrim 标记剪裁循环的开始,使用 gluEndTrim 标记剪裁循环的结束。 剪裁循环是一组定向曲线段, (形成定义 NURBS 图面边界的闭合曲线) 。 在调用 gluBeginSurface 和 gluEndSurface 之间,可以在 NURBS 图面的定义中包括这些剪裁循环。
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 [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|