gle ‐ an introduction to the GLE Tubing & Extrusions Library

#include <GL/gle.h>

The GLE Tubing and Extrusion Library is a graphics
application programming interface (API). The library
consists of a number of "C" language subroutines for drawing
tubing and extrusions. The library is distributed in source
code form, in a package that includes documentation, a VRML
proposal, Makefiles, and full source code and header files.
It uses the OpenGL (TM) programming API to perform the
actual drawing of the tubing and extrusions.

A "sweep" or "extrusion" is a 2D contour (polyline) that is
swept or extruded along a 3D path (polyline). For example,
sweeping a circle along a straight line will generate a
cylinder.  Sweeping a circle along a circular path will
generate a doughnut (torus).

The library also includes a set of utility routines for
drawing some of the more common extruded shapes: a
polycylinder, a polycone, a generalized torus (circle swept
along a helical path), a "helix" (arbitrary contour swept
along a helical path) and a "lathe" (arbitrary contour swept
along a helical path, with torsion used to keep the contour

The most general extrusion supported by this library allows
an arbitrary 2D contour to be swept around an arbitrary 3D
path. A set of normal vectors can be specified to go along
with the contour; the normal vectors determine the
appearance of the contour when lighting is turned on. A set
of colors and affine matrices can be specified to go along
with the 3D path.  The colors are used to color along the
path.  The affine matrices are used to operate on the
contour as it is swept along. If no affine matrices are
specified, the contour is extruded using the mathematical
concept of "parallel translation" or "Gaussian translation".
That is, the contour is moved (and drawn) along the
extrusion path in a "straight" manner. If there are affine
matrices, they are applied to the contour at each extrusion
segment before the segment is drawn.

The affine matrices allow work in a quasi‐non‐Euclidean
space. They essentially allow the contour to be distorted as
it is swept along. The allow the contour to be rotated,
translated and rescaled as it is drawn. For example, a
rescaling will turn a polycylinder into a poly‐cone, since
the circle that is being extruded is scaled to a different
size at each extrusion vertex. A rotation allows the contour
to be spun around while it is being extruded, thus for
instance allowing drill‐bit type shapes to be drawn. A


translation allows the appearance of shearing in real space;
that is, taking a contour and displacing it, without
otherwise bending it. Note that the affines are 2x3
matrices, not 3x4 matrices, since they apply to the 2D
contour as it is being extruded.

gleExtrusion, gleHelicoid, gleLathe, glePolyCone,
glePolyCylinder, gleScrew, gleSetJoinStyle, gleSpiral,
gleSuperExtrusion, gleTextureMode, gleToroid,
gleTwistExtrusion, gleTwistExtrusion, gleSuperExtrusion

Linas Vepstas (