Condividi tramite


Funzione gluBeginTrim

Le funzioni gluBeginTrim e gluEndTrim delimitano una definizione di ciclo di taglio B-Spline (NURBS) non uniforme.

Sintassi

void WINAPI gluBeginTrim(
   GLUnurbs *nobj
);

Parametri

nobj

Oggetto NURBS (creato con gluNewNurbsRenderer).

Valore restituito

Questa funzione non restituisce un valore.

Commenti

Usare gluBeginTrim per contrassegnare l'inizio di un ciclo di taglio e gluEndTrim per contrassegnare la fine di un ciclo di taglio. Un ciclo di taglio è un set di segmenti di curva orientata (formando una curva chiusa) che definiscono i limiti di una superficie NURBS. Questi cicli di taglio sono inclusi nella definizione di una superficie NURBS, tra chiamate a gluBeginSurface e gluEndSurface.

La definizione di una superficie NURBS può contenere molti cicli di taglio. Ad esempio, se si scrive una definizione per una superficie NURBS simile a un rettangolo con un foro punzonato, la definizione conterrà due cicli di taglio. Un ciclo definirà il bordo esterno del rettangolo; l'altro definirebbe il foro pugno. Le definizioni di ognuno di questi cicli di taglio vengono racchiuse tra parentesi da una coppia gluBeginTrim / gluEndTrim .

La definizione di un singolo ciclo di taglio chiuso può essere costituita da più segmenti di curva, ognuno descritto come una serie di segmenti di linea che formano una curva lineare (vedere gluPwlCurve), come una singola curva NURBS (vedere gluNurbsCurve) o come combinazione di entrambi in qualsiasi ordine. Le uniche chiamate di libreria che possono essere visualizzate in una definizione di ciclo di taglio (tra le chiamate a gluBeginTrim e gluEndTrim) sono gluPwlCurve e gluNurbsCurve.

L'area visualizzata della superficie NURBS è l'area nel dominio a sinistra della curva di taglio man mano che aumenta il parametro della curva. Di conseguenza, la regione mantenuta della superficie NURBS si trova all'interno di un ciclo di taglio antiorario e all'esterno di un ciclo di taglio in senso orario. Per il rettangolo menzionato in precedenza, il ciclo di taglio per il bordo esterno del rettangolo viene eseguito in senso antiorario, mentre il ciclo di taglio per il foro punzonato viene eseguito in senso orario.

Se si usano più curve per definire un singolo ciclo di taglio, i segmenti di curva devono formare un ciclo chiuso, ovvero l'endpoint di ogni curva deve essere il punto iniziale della curva successiva e l'endpoint della curva finale deve essere il punto iniziale della prima curva. Se gli endpoint della curva sono sufficientemente vicini ma non esattamente coincidenti, saranno costretti a corrispondere. Se gli endpoint non sono sufficientemente vicini, viene restituito un errore (vedere gluNurbsCallback).

Se una definizione di ciclo di taglio contiene più curve, la direzione delle curve deve essere coerente , ovvero l'interno deve essere a sinistra di tutte le curve. È possibile usare cicli di taglio annidati purché gli orientamenti della curva si alternano correttamente. Le curve di taglio non possono essere autosecanti né intersecarsi tra loro (o i risultati di un errore).

Se non vengono fornite informazioni di taglio per una superficie NURBS, viene disegnata l'intera superficie.

Esempio

Questo frammento di codice definisce un ciclo di taglio costituito da una curva lineare a fasi e da due curve NURBS:

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

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Glu.h
Libreria
Glu32.lib
DLL
Glu32.dll

Vedi anche

gluBeginSurface

gluEndSurface

gluNewNurbsRenderer

gluNurbsCallback

gluNurbsCurve

gluPwlCurve