Fonction gluBeginTrim

Les fonctions gluBeginTrim et gluEndTrim délimitent une définition de boucle de découpage NURBS (Rational B-Spline) non uniforme.

Syntaxe

void WINAPI gluBeginTrim(
   GLUnurbs *nobj
);

Paramètres

nobj

Objet NURBS (créé avec gluNewNurbsRenderer).

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Notes

Utilisez gluBeginTrim pour marquer le début d’une boucle de découpage et gluEndTrim pour marquer la fin d’une boucle de découpage. Une boucle de découpage est un ensemble de segments de courbe orientés (formant une courbe fermée) qui définissent les limites d’une surface NURBS. Vous incluez ces boucles de découpage dans la définition d’une surface NURBS, entre les appels à gluBeginSurface et gluEndSurface.

La définition d’une surface NURBS peut contenir de nombreuses boucles de découpage. Par exemple, si vous écrivez une définition pour une surface NURBS qui ressemble à un rectangle avec un trou perforé, la définition contient deux boucles de découpage. Une boucle définirait le bord externe du rectangle ; l’autre définirait le trou perforé. Les définitions de chacune de ces boucles de découpage sont placées entre crochets par une paire gluBeginTrim / gluEndTrim .

La définition d’une seule boucle de découpage fermée peut se composer de plusieurs segments de courbe, chacun décrit comme une série de segments de ligne qui forment une courbe linéaire (voir gluPwlCurve), une seule courbe NURBS (voir gluNurbsCurve) ou une combinaison des deux dans n’importe quel ordre. Les seuls appels de bibliothèque qui peuvent apparaître dans une définition de boucle de découpage (entre les appels à gluBeginTrim et gluEndTrim) sont gluPwlCurve et gluNurbsCurve.

La zone affichée de la surface NURBS est la région du domaine à gauche de la courbe de découpage à mesure que le paramètre de courbe augmente. Ainsi, la région conservée de la surface NURBS se trouve à l’intérieur d’une boucle de découpage dans le sens des aiguilles d’une montre et à l’extérieur d’une boucle de découpage dans le sens des aiguilles d’une montre. Pour le rectangle mentionné précédemment, la boucle de découpage du bord externe du rectangle s’exécute dans le sens inverse des aiguilles d’une montre, tandis que la boucle de découpage pour le trou perforé s’exécute dans le sens des aiguilles d’une montre.

Si vous utilisez plusieurs courbes pour définir une seule boucle de découpage, les segments de courbe doivent former une boucle fermée (autrement dit, le point de terminaison de chaque courbe doit être le point de départ de la courbe suivante et le point de terminaison de la dernière courbe doit être le point de départ de la première courbe). Si les points de terminaison de la courbe sont suffisamment proches les uns des autres, mais pas exactement coïncidants, ils seront obligés de correspondre. Si les points de terminaison ne sont pas suffisamment proches, une erreur se produit (voir gluNurbsCallback).

Si une définition de boucle de découpage contient plusieurs courbes, la direction des courbes doit être cohérente (autrement dit, l’intérieur doit se trouver à gauche de toutes les courbes). Vous pouvez utiliser des boucles de découpage imbriquées tant que les orientations de la courbe alternent correctement. Les courbes de coupe ne peuvent pas être auto-croisées, ni se croiser les unes les autres (ou un résultat d’erreur).

Si aucune information de découpage n’est donnée pour une surface NURBS, la surface entière est dessinée.

Exemples

Ce fragment de code définit une boucle de découpage qui se compose d’une courbe linéaire au niveau de la pièce et de deux courbes NURBS :

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

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Glu.h
Bibliothèque
Glu32.lib
DLL
Glu32.dll

Voir aussi

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve