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

FreeBSD Manual Pages

  
 
  

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 glu-
       EndTrim 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 resembled a
       rectangle  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 defi-
       nitions	of each	of these trimming loops	would be bracketed by a	gluBe-
       ginTrim/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 combina-
       tion of both in any order. The only library calls that can appear in  a
       trimming	 loop  definition  (between the	calls to gluBeginTrim and glu-
       EndTrim)	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 in-
       creases.	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,	 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.0.quarterly>

home | help