Freigeben über


gluEndTrim-Funktion

Die Funktionen gluBeginTrim und gluEndTrim trennen eine Nicht einheitliche Rational-B-Spline-Definition (NURBS).

Syntax

void WINAPI gluEndTrim(
   GLUnurbs *nobj
);

Parameter

nobj

Das NURBS-Objekt (erstellt mit gluNewNurbsRenderer).

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Bemerkungen

Verwenden Sie gluBeginTrim , um den Anfang einer Trimmschleife zu markieren, und gluEndTrim , um das Ende einer Trimmschleife zu markieren. Eine Trimmschleife ist eine Gruppe von orientierten Kurvensegmenten (die eine geschlossene Kurve bilden), die Grenzen einer NURBS-Oberfläche definieren. Sie fügen diese Trimmschleifen in die Definition einer NURBS-Oberfläche zwischen Aufrufen von gluBeginSurface und gluEndSurface ein.

Die Definition für eine NURBS-Oberfläche kann viele Trimmschleifen enthalten. Wenn Sie beispielsweise eine Definition für eine NURBS-Oberfläche schreiben, die einem Rechteck mit durchstanzten Loch ähnelt, enthält die Definition zwei Trimmschleifen. Eine Schleife würde den äußeren Rand des Rechtecks definieren. die andere würde das ausstanzte Loch definieren. Die Definitionen jeder dieser Trimmschleifen werden durch ein gluBeginTrim-gluEndTrim-Paar / in Klammern gesetzt.

Die Definition einer einzelnen geschlossenen Trimmschleife kann aus mehreren Kurvensegmenten bestehen, die jeweils als Eine Reihe von Liniensegmenten beschrieben werden, die eine lineare Kurve bilden (siehe gluPwlCurve), als einzelne NURBS-Kurve (siehe gluNurbsCurve) oder als Kombination aus beidem in beliebiger Reihenfolge. Die einzigen Bibliotheksaufrufe, die in einer Trimmschleifendefinition (zwischen den Aufrufen von gluBeginTrim und gluEndTrim) angezeigt werden können, sind gluPwlCurve und gluNurbsCurve.

Der angezeigte Bereich der NURBS-Oberfläche ist der Bereich in der Domäne links von der Beschneidungskurve, wenn der Kurvenparameter zunimmt. Daher befindet sich der beibehaltene Bereich der NURBS-Oberfläche innerhalb einer Abschneidschleife gegen den Uhrzeigersinn und außerhalb einer Abschneidschleife im Uhrzeigersinn. Für das oben erwähnte Rechteck läuft die Trimmschleife für den äußeren Rand des Rechtecks gegen den Uhrzeigersinn, während die Trimmschleife für das gestanzte Loch im Uhrzeigersinn läuft.

Wenn Sie mehr als eine Kurve verwenden, um eine einzelne Schleife zu definieren, müssen die Kurvensegmente eine geschlossene Schleife bilden (das heißt, der Endpunkt jeder Kurve muss der Startpunkt der nächsten Kurve sein, und der Endpunkt der letzten Kurve muss der Startpunkt der ersten Kurve sein). Wenn die Endpunkte der Kurve ausreichend nah beieinander liegen, aber nicht genau zufällig, werden sie gezwungen, übereinstimmen zu müssen. Wenn die Endpunkte nicht ausreichend nah sind, tritt ein Fehler auf (siehe gluNurbsCallback).

Wenn eine Definition der Kürzungsschleife mehrere Kurven enthält, muss die Richtung der Kurven konsistent sein (das heißt, die Innenseite muss sich links von allen Kurven befinden). Sie können geschachtelte Trimmschleifen verwenden, solange sich die Kurvenausrichtung ordnungsgemäß abwechselt. Kürzungskurven können sich weder selbstschneidend sein, noch können sie sich gegenseitig überschneiden (oder es entsteht ein Fehler).

Wenn für eine NURBS-Oberfläche keine Beschneidungsinformationen angegeben werden, wird die gesamte Fläche gezeichnet.

Beispiele

Dieses Codefragment definiert eine Trimmschleife, die aus einer stückweisen linearen Kurve und zwei NURBS-Kurven besteht:

gluBeginTrim(nobj); 
    gluPwlCurve(. . ., GLU_MAP1_TRIM_2); 
    gluNurbsCurve(. . ., GLU_MAP1_TRIM_2); 
    gluNurbsCurve(. . ., GLU_MAP1_TRIM_3);  
gluEndTrim(nobj);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Glu.h
Bibliothek
Glu32.lib
DLL
Glu32.dll

Siehe auch

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve