This module corresponds to chapter 5 (Polygon Tessellation) of the GLU specs.
- data AnnotatedVertex v = AnnotatedVertex (Vertex3 GLdouble) v
- newtype ComplexContour v = ComplexContour [AnnotatedVertex v]
- newtype ComplexPolygon v = ComplexPolygon [ComplexContour v]
- data WeightedProperties v = WeightedProperties (GLfloat, v) (GLfloat, v) (GLfloat, v) (GLfloat, v)
- type Combiner v = Vertex3 GLdouble -> WeightedProperties v -> v
- data TessWinding
- type Tolerance = GLdouble
- type Tessellator p v = TessWinding -> Tolerance -> Normal3 GLdouble -> Combiner v -> ComplexPolygon v -> IO (p v)
- newtype SimpleContour v = SimpleContour [AnnotatedVertex v]
- newtype PolygonContours v = PolygonContours [SimpleContour v]
- extractContours :: Storable v => Tessellator PolygonContours v
- type TriangleVertex v = AnnotatedVertex (v, EdgeFlag)
- data Triangle v = Triangle (TriangleVertex v) (TriangleVertex v) (TriangleVertex v)
- newtype Triangulation v = Triangulation [Triangle v]
- triangulate :: Storable v => Tessellator Triangulation v
- data Primitive v = Primitive PrimitiveMode [AnnotatedVertex v]
- newtype SimplePolygon v = SimplePolygon [Primitive v]
- tessellate :: Storable v => Tessellator SimplePolygon v
The basic building block in tessellation is a 3D vertex with an associated property, e.g. color, texture coordinates, etc.
A complex contour, which can be self-intersecting and/or concave.
A complex (possibly concave) polygon, represented by one or more complex and possibly intersecting contours.
Four vertex properties (cf.
AnnotatedVertex) with associated weigths
summing up to 1.0.
A function combining given vertex properties into a property for a newly generated vertex
The relative tolerance under which two vertices can be combined (see
Combiner). Multiplication with the largest coordinate magnitude of all
polygon vertices yields the maximum distance between two mergeable vertices.
Note that merging is optional and the tolerance is only a hint.
A general tessellator type.
Before tessellation of a complex polygon, all its vertices are projected into
a plane perpendicular to the given normal. If the given normal is
Normal3 0 0 0, a fitting plane of all vertices is used.
A simple, non-self-intersecting contour
The contours of a complex polygon, represented by one or more non-intersecting simple contours
A triangle vertex with additional information about the edge it begins
A triangle, represented by three triangle vertices
A triangulation of a complex polygon