Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GLUBEGINTRIM()							  GLUBEGINTRIM()

NAME
     gluBeginTrim, gluEndTrim - delimit a NURBS trimming loop definition

C SPECIFICATION
     void gluBeginTrim( GLUnurbs* nurb )

     void gluEndTrim( GLUnurbs* nurb )

     delim $$

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 sur-
     face, between calls to gluBeginSurface and gluEndSurface.

     The definition for a NURBS surface can contain many trimming loops. For ex-
     ample, if you wrote a definition for a NURBS surface that resembled a  rec-
     tangle  with  a hole punched out, the definition would contain two trimming
     loops. One loop would define the outer edge of  the  rectangle;  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	multiple
     curve  segments,  each  described	as a piecewise linear curve (see gluPwl-
     Curve) 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 trim-
     ming loop and outside a clockwise trimming loop.  For  the  rectangle  men-
     tioned  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-intersect-
     ing, 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 piecewise
     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,  gluNewNurbsRenderer,   gluNurbsCallback,   gluNurbsCurve,
     gluPwlCurve

								  GLUBEGINTRIM()

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gluEndTrim&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help