OpenGL-2.2.1.1: A binding for the OpenGL graphics systemSource codeContentsIndex
Graphics.Rendering.OpenGL.GLU.Tessellation
Portabilityportable
Stabilitystable
Maintainersven.panne@aedion.de
Contents
Polygon description
Combining vertices
Tessellation parameters
Tessellator type
Contour extraction
Triangulation
Tessellation into primitives
Description
This module corresponds to chapter 5 (Polygon Tessellation) of the GLU specs.
Synopsis
data AnnotatedVertex v = AnnotatedVertex (Vertex3 GLdouble) v
newtype ComplexContour v = ComplexContour [AnnotatedVertex v]
newtype ComplexPolygon v = ComplexPolygon [ComplexContour v]
data WeightedProperties v = WeightedProperties (GLclampf, v) (GLclampf, v) (GLclampf, v) (GLclampf, v)
type Combiner v = Vertex3 GLdouble -> WeightedProperties v -> v
data TessWinding
= TessWindingOdd
| TessWindingNonzero
| TessWindingPositive
| TessWindingNegative
| TessWindingAbsGeqTwo
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
Polygon description
data AnnotatedVertex vSource
The basic building block in tessellation is a 3D vertex with an associated property, e.g. color, texture coordinates, etc.
Constructors
AnnotatedVertex (Vertex3 GLdouble) v
show/hide Instances
newtype ComplexContour vSource
A complex contour, which can be self-intersecting and/or concave.
Constructors
ComplexContour [AnnotatedVertex v]
show/hide Instances
newtype ComplexPolygon vSource
A complex (possibly concave) polygon, represented by one or more complex and possibly intersecting contours.
Constructors
ComplexPolygon [ComplexContour v]
show/hide Instances
Combining vertices
data WeightedProperties vSource
Four vertex properties (cf. AnnotatedVertex) with associated weigths summing up to 1.0.
Constructors
WeightedProperties (GLclampf, v) (GLclampf, v) (GLclampf, v) (GLclampf, v)
show/hide Instances
type Combiner v = Vertex3 GLdouble -> WeightedProperties v -> vSource
A function combining given vertex properties into a property for a newly generated vertex
Tessellation parameters
data TessWinding Source
Constructors
TessWindingOdd
TessWindingNonzero
TessWindingPositive
TessWindingNegative
TessWindingAbsGeqTwo
show/hide Instances
type Tolerance = GLdoubleSource

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.

Tessellator type
type Tessellator p v = TessWinding -> Tolerance -> Normal3 GLdouble -> Combiner v -> ComplexPolygon v -> IO (p v)Source

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.

Contour extraction
newtype SimpleContour vSource
A simple, non-self-intersecting contour
Constructors
SimpleContour [AnnotatedVertex v]
show/hide Instances
newtype PolygonContours vSource
The contours of a complex polygon, represented by one or more non-intersecting simple contours
Constructors
PolygonContours [SimpleContour v]
show/hide Instances
extractContours :: Storable v => Tessellator PolygonContours vSource
Triangulation
type TriangleVertex v = AnnotatedVertex (v, EdgeFlag)Source
A triangle vertex with additional information about the edge it begins
data Triangle vSource
A triangle, represented by three triangle vertices
Constructors
Triangle (TriangleVertex v) (TriangleVertex v) (TriangleVertex v)
show/hide Instances
Eq v => Eq (Triangle v)
Ord v => Ord (Triangle v)
newtype Triangulation vSource
A triangulation of a complex polygon
Constructors
Triangulation [Triangle v]
show/hide Instances
triangulate :: Storable v => Tessellator Triangulation vSource
Tessellation into primitives
data Primitive vSource
Constructors
Primitive PrimitiveMode [AnnotatedVertex v]
show/hide Instances
Eq v => Eq (Primitive v)
Ord v => Ord (Primitive v)
newtype SimplePolygon vSource
Constructors
SimplePolygon [Primitive v]
show/hide Instances
tessellate :: Storable v => Tessellator SimplePolygon vSource
Produced by Haddock version 0.8