gluBeginTrim-Funktion

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

Syntax

void WINAPI gluBeginTrim(
   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 Reihe von orientierten Kurvensegmenten (die eine geschlossene Kurve bilden), die Die Grenzen einer NURBS-Oberfläche definieren. Sie schließen 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 z. B. eine Definition für eine NURBS-Oberfläche schreiben, die einem Rechteck mit einer durchstanzten Lücke ähnelt, enthält die Definition zwei Trimmschleifen. Eine Schleife würde den äußeren Rand des Rechtecks definieren. die andere würde das ausgestanzte Loch definieren. Die Definitionen jeder dieser Trimmschleifen werden durch ein gluBeginTrimgluEndTrim-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 Trimmkurve, wenn der Kurvenparameter zunimmt. Daher befindet sich der beibehaltene Bereich der NURBS-Oberfläche innerhalb einer Trimmschleife gegen den Uhrzeigersinn und außerhalb einer Trimmschleife im Uhrzeigersinn. Für das oben erwähnte Rechteck wird die Trimmschleife für den äußeren Rand des Rechtecks gegen den Uhrzeigersinn ausgeführt, während die Trimmschleife für das gestanzte Loch im Uhrzeigersinn läuft.

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

Wenn eine Trimmschleifendefinition 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 nicht selbst überschneidend sein oder sich gegenseitig überschneiden (oder es tritt ein Fehler auf).

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

Beispiele

Dieses Codefragment definiert eine Trimmschleife, die aus einer 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