gluBeginTrim 函式

gluBeginTrimgluEndTrim函式會分隔非統一的合理 B-Spline (NURBS) 修剪迴圈定義。

語法

void WINAPI gluBeginTrim(
   GLUnurbs *nobj
);

參數

nobj

使用 gluNewNurbsRenderer) 建立的 NURBS 物件 (。

傳回值

此函式不會傳回值。

備註

使用 gluBeginTrim 標記修剪迴圈的開頭, 而 gluEndTrim 則會標記修剪迴圈的結尾。 修剪迴圈是一組導向曲線區段, (形成封閉曲線) 來定義 NURBS 表面的界限。 您可以在 NURBS 介面的定義中包含這些修剪迴圈,在 對 gluBeginSurfacegluEndSurface的呼叫之間。

NURBS 介面的定義可以包含許多修剪迴圈。 例如,如果您撰寫類似矩形的 NURBS 表面定義,而該矩形有孔壓出,則定義會包含兩個修剪迴圈。 一個迴圈會定義矩形的外部邊緣;另一個會定義孔外孔。 每個修剪迴圈的定義都會以gluBeginTrim / gluEndTrim配對括住。

單一封閉修剪迴圈的定義可以由多個曲線區段組成,每個線段都描述為一系列的線條線段, (請參閱 gluPwlCurve) ,作為單一 NURBS 曲線, (查看 gluNurbsCurve) ,或以任意順序兩者的組合。 在 對 gluBeginTrimgluEndTri) m 的呼叫之間,唯一可以出現在修剪迴圈定義中的程式庫呼叫 (為 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 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Glu.h
程式庫
Glu32.lib
DLL
Glu32.dll

另請參閱

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve