gluBeginTrim 関数
gluBeginTrim 関数と gluEndTrim 関数は、非均一な有理 B スプライン (NURBS) トリミング ループ定義を区切ります。
構文
void WINAPI gluBeginTrim(
GLUnurbs *nobj
);
パラメーター
-
nobj
-
NURBS オブジェクト ( gluNewNurbsRenderer で作成)。
戻り値
この関数は値を返しません。
注釈
トリミング ループの先頭をマークするには gluBeginTrim を使用し、トリミング ループの末尾をマークするには gluEndTrim を使用します。 トリミング ループは、NURBS サーフェスの境界を定義する(閉じた曲線を形成する)一連の指向曲線セグメントです。 これらのトリミング ループは、 gluBeginSurface と gluEndSurface の呼び出しの間で、NURBS サーフェスの定義に含 めます。
NURBS サーフェスの定義には、多数のトリミング ループを含めることができます。 たとえば、穴が抜かれた四角形に似た NURBS サーフェスの定義を記述すると、定義には 2 つのトリミング ループが含まれます。 1 つのループで四角形の外側の端が定義されます。もう一方はパンチアウト穴を定義します。 これらの各トリミング ループの定義は、gluBeginTrim gluEndTrim / ペアで角かっこで囲まれます。
1 つの閉じたトリミング ループの定義は、複数の曲線セグメントで構成できます。それぞれ、直線曲線を形成する一連の線分 ( gluPwlCurve を参照)、単一の NURBS 曲線 ( gluNurbsCurve を参照)、または任意の順序で両方の組み合わせとして記述されます。 トリミング ループ定義に表示できるライブラリ呼び出し ( gluBeginTrim と gluEndTrim の間) は 、gluPwlCurve と gluNurbsCurve のみです。
NURBS サーフェスの表示領域は、カーブ パラメータが増加するにつれてトリミングカーブの左側にあるドメイン内の領域です。 したがって、NURBS サーフェスの保持領域は、反時計回りのトリミング ループ内にあり、時計回りのトリミング ループの外側にあります。 前述の四角形の場合、四角形の外側の端のトリミング ループは反時計回りに実行され、パンチアウトされた穴のトリミング ループは時計回りに実行されます。
複数の曲線を使用して 1 つのトリミング ループを定義する場合、曲線セグメントは閉じたループを形成する必要があります (つまり、各曲線の終点は次の曲線の始点である必要があり、最後の曲線の終点は最初の曲線の始点である必要があります)。 曲線の端点が十分に近接しているが、完全に一致していない場合は、一致が強制されます。 エンドポイントが十分に閉じていない場合は、エラーが発生します ( gluNurbsCallback を参照)。
トリミング ループ定義に複数の曲線が含まれている場合、曲線の方向は一貫している必要があります (つまり、内側はすべての曲線の左側にある必要があります)。 入れ子になったトリミング ループは、曲線の向きが正しく切り替える限り使用できます。 トリミング曲線を自己交差したり、相互に交差したりすることはできません (またはエラー結果)。
NURBS サーフェスのトリミング情報が指定されていない場合は、サーフェス全体が描画されます。
例
このコード フラグメントは、1 つの区分線形曲線と 2 つの 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] |
|