GLUTESPROPERTY(3G) GLUTESPROPERTY(3G)
NAME
gluTessProperty - set a tessellation object property
C SPECIFICATION
void gluTessProperty( GLUtesselator* tess,
GLenum which,
GLdouble data )
PARAMETERS
tess Specifies the tessellation object (created with gluNewTess).
which Specifies the property to be set. Valid values are
GLUTESWINDINGRULE, GLUTESBOUNDARYONLY,
GLUTESTOLERANCE.
data 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 inter-
preted and rendered. The legal values for which are as follows:
GLUTESWINDINGRULE
Determines which parts of the polygon are on the "inte-
rior". data may be set to one of GLUTESWINDINGOD,
GLUTESWINDINGNONZERO, GLUTESWINDINGPOSITIVE, or
GLUTESWINDINGNEGATIVE, or
GLUTESWINDINGABSGEQTWO.
To understand how the winding rule works, 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 CW is posi-
tive). 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.
GLUTESBOUNDARYONLY
Is a boolean value ("value" should be set to GLTRUE or
GLFALSE). When set to GLTRUE, a set of closed contours
separating the polygon interior and exterior are
returned instead of a tessellation. Exterior contours
are oriented CW with respect to the normal; interior
contours are oriented CW. The GLUTESBEGIN and
GLUTESBEGINDATA callbacks use the type GLINELOP
for each contour.
GLUTESTOLERANCE
Specifies a tolerance for merging features to reduce the
size of the output. For example, two vertices that are
very close to each other might be replaced by a single
vertex. The tolerance is multiplied by the largest coor-
dinate 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 initial tolerance is 0.
The current implementation merges vertices only if they
are exactly coincident, regardless of the current toler-
ance. 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, gluNewTess
GLUTESPROPERTY(3G)
|