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