次の方法で共有


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 を参照)、または任意の順序で両方の組み合わせとして記述されます。 トリミング ループ定義に表示できるライブラリ呼び出し ( gluBeginTrimgluEndTrim の間) は 、gluPwlCurvegluNurbsCurve のみです。

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 [デスクトップ アプリのみ]
ヘッダー
Glu.h
ライブラリ
Glu32.lib
[DLL]
Glu32.dll

関連項目

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve