gluTessProperty.3gl (GLU version 1.2 and later)




Name

  gluTessProperty - set	a tessellation object property


C Specification

  void gluTessProperty(	GLUtesselator *tess,
			GLenum which,
			GLdouble value )


Parameters


  tess	 Specifies the tessellation object (created with gluNewTess).

  which	 Specifies the property	to be set.  Valid values are
	 GLU_TESS_WINDING_RULE,	GLU_TESS_BOUNDARY_ONLY,	GLU_TESS_TOLERANCE.

  value	 Specifies the value of	the indicated property.


Description

  gluTessProperty is used to control properties	stored in a tessellation
  object.  These properties affect the way that	the polygons are interpreted
  and rendered.	The legal values for which are as follows:


  GLU_TESS_WINDING_RULE	   determines which parts of the polygon are on	the
			   "interior". value may be set	to one of
			   GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_NONZERO,
			   GLU_TESS_WINDING_POSITIVE, or
			   GLU_TESS_WINDING_NEGATIVE, or
			   GLU_TESS_WINDING_ABS_GEQ_TWO.

			   To understand how the winding rule works first
			   consider that the input contours partition the
			   plane into regions. The winding rule	determines
			   which of these regions are inside the polygon.

			   For a single	contour	C, the winding number of a
			   point x is simply the signed	number of revolutions
			   we make around x as we travel once around C (where
			   CCW is positive). When there	are several contours,
			   the individual winding numbers are summed. This
			   procedure associates	a signed integer value with
			   each	point x	in the plane. Note that	the winding
			   number is the same for all points in	a single
			   region.

			   The winding rule classifies a region	as "inside"
			   if its winding number belongs to the	chosen
			   category (odd, nonzero, positive, negative, or
			   absolute value of at	least two). The	previous GLU
			   tessellator (prior to GLU 1.2) used the "odd"
			   rule. The "nonzero" rule is another common way to
			   define the interior.	The other three	rules are
			   useful for polygon CSG operations.


  GLU_TESS_BOUNDARY_ONLY   is a	boolean	value ("value" should be set to
			   GL_TRUE or GL_FALSE). When set to GL_TRUE, a	set
			   of closed contours separating the polygon interior
			   and exterior	are returned instead of	a
			   tessellation. Exterior contours are oriented	CCW
			   with	respect	to the normal, interior	contours are
			   oriented CW.	The GLU_TESS_BEGIN and
			   GLU_TESS_BEGIN_DATA callbacks use the type
			   GL_LINE_LOOP	for each contour.


  GLU_TESS_TOLERANCE	   specifies a tolerance for merging features to
			   reduce the size of the output.  For example,	two
			   vertices which are very close to each other might
			   be replaced by a single vertex. The tolerance is
			   multiplied by the largest coordinate	magnitude of
			   any input vertex; this specifies the	maximum
			   distance that any feature can move as the result
			   of a	single merge operation.	If a single feature
			   takes part in several merge operations, the total
			   distance moved could	be larger.

			   Feature merging is completely optional; the
			   tolerance is	only a hint.  The implementation is
			   free	to merge in some cases and not in others, or
			   to never merge features at all. The default
			   tolerance is	zero.

			   The current implementation merges vertices only if
			   they	are exactly coincident,	regardless of the
			   current tolerance. A	vertex is spliced into an
			   edge	only if	the implementation is unable to
			   distinguish which side of the edge the vertex lies
			   on. Two edges are merged only when both endpoints
			   are identical.


See Also

  gluGetTessProperty




Introduction | Alphabetic | Specification

Last Edited: Fri, May 26, 1995

AFV