OpenGL man pages
gluTessNormal.3gl (GLU version 1.2 and later)
gluTessNormal - specify a normal for a polygon
void gluTessNormal( GLUtesselator *tess,
GLdouble z )
tess Specifies the tessellation object (created with gluNewTess).
x Specifies the first component of the normal.
y Specifies the second component of the normal.
z Specifies the third component of the normal.
gluTessNormal describes a normal for a polygon that the user is defining.
All input data will be projected onto a plane perpendicular to one of the
three coordinate axes before tessellation and all output triangles will be
oriented CCW with respect to the normal (CW orientation can be obtained by
reversing the sign of the supplied normal). For example, if you know that
all polygons lie in the x-y plane, call gluTessNormal(tess, 0.0, 0.0, 1.0)
before rendering any polygons.
If the supplied normal is (0,0,0) (the default value), the normal is
determined as follows. The direction of the normal, up to its sign, is
found by fitting a plane to the vertices, without regard to how the
vertices are connected. It is expected that the input data lies
approximately in the plane; otherwise projection perpendicular to one of
the three coordinate axes may substantially change the geometry. The sign
of the normal is chosen so that the sum of the signed areas of all input
contours is non-negative (where a CCW contour has positive area).
The supplied normal persists until it is changed by another call to
Fri Dec 6 11:18:03 EST 1996
Look here for legal stuff: Legal