gluEndTrim 関数
gluBeginTrim 関数と gluEndTrim 関数は、非均一有理 B スプライン (NURBS) トリミング ループ定義を区切ります。
void WINAPI gluEndTrim(
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] |
|