gluEndTrim

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GLUBEGINTRIM(3G)					     GLUBEGINTRIM(3G)



NAME
       gluBeginTrim, gluEndTrim - delimit a NURBS trimming loop definition


C SPECIFICATION
       void gluBeginTrim( GLUnurbs* nurb )

       void gluEndTrim( GLUnurbs* nurb )


PARAMETERS
       nurb  Specifies the NURBS object (created with gluNewNurbsRenderer).

DESCRIPTION
       Use  gluBeginTrim  to  mark  the	 beginning  of	a  trimming loop, and
       gluEndTrim to mark the end of a trimming loop. A trimming  loop	is  a
       set  of	oriented  curve segments (forming a closed curve) that define
       boundaries of a NURBS surface. You include these trimming loops in the
       definition  of  a  NURBS surface, between calls to gluBeginSurface and
       gluEndSurface.

       The definition for a NURBS surface can contain  many  trimming  loops.
       For example, if you wrote a definition for a NURBS surface that resem-
       bled a rectangle with a hole punched out, the definition would contain
       two  trimming loops. One loop would define the outer edge of the rect-
       angle; the other would define the hole punched out of  the  rectangle.
       The  definitions of each of these trimming loops would be bracketed by
       a gluBeginTrim/gluEndTrim pair.

       The definition of a single closed trimming loop can consist of  multi-
       ple  curve  segments,  each described as a piecewise linear curve (see
       gluPwlCurve) or as a single NURBS curve (see gluNurbsCurve), or	as  a
       combination  of	both  in  any  order. The only library calls that can
       appear  in  a  trimming	loop  definition  (between   the   calls   to
       gluBeginTrim and gluEndTrim) are gluPwlCurve and gluNurbsCurve.

       The  area  of the NURBS surface that is displayed is the region in the
       domain to the left of  the  trimming  curve  as	the  curve  parameter
       increases.  Thus, the retained region of the NURBS surface is inside a
       counterclockwise trimming loop and outside a clockwise trimming	loop.
       For  the	 rectangle mentioned earlier, the trimming loop for the outer
       edge of the rectangle runs counterclockwise, while the  trimming	 loop
       for the punched-out hole runs clockwise.

       If  you	use more than one curve to define a single trimming loop, the
       curve segments must form a closed loop (that is, the endpoint of	 each
       curve  must  be the starting point of the next curve, and the endpoint
       of the final curve must be the starting point of the first curve).  If
       the  endpoints  of  the	curve are sufficiently close together but not
       exactly coincident, they will be coerced to match.  If  the  endpoints
       are not sufficiently close, an error results (see gluNurbsCallback).

       If  a trimming loop definition contains multiple curves, the direction
       of the curves must be consistent (that is, the inside must be  to  the
       left of all of the curves). Nested trimming loops are legal as long as
       the curve orientations alternate correctly.  If	trimming  curves  are
       self-intersecting, or intersect one another, an error results.

       If  no  trimming	 information is given for a NURBS surface, the entire
       surface is drawn.

EXAMPLE
       This code fragment defines a trimming loop that consists of one piece-
       wise linear curve, and two NURBS curves:

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

SEE ALSO
       gluBeginSurface(3G),   gluNewNurbsRenderer(3G),	gluNurbsCallback(3G),
       gluNurbsCurve(3G), gluPwlCurve(3G)





							     GLUBEGINTRIM(3G)