Element type: |
miSCENE_POLYGON |

Data type: |
miPolygon[ ] |

Sizes: |
int no_polys |

Defaults: |
all nulls |

typedef struct miPolygon { miGeoIndex no_loops; /* 1 + (number of holes) */ miGeoIndex no_vertices; /* total number of vertices + headers*/ miGeoIndex vertex_idx; /* into indices list, for sharing */ miTag material; /* surface properties */ miCBoolean convex; /* is polygon convex ? */ miCBoolean spare[3]; /* not used */ } miPolygon;

A translator must provide: all fields except
`spare`.

**no_loops** is the number of loops of the polygon. Every
polygon has exactly one outer boundary loop, plus any number of
optional hole loops. Every loop is stored as a pseudo-index called
a "header" that doesn't actually refer to the vector list but gives
the number of indices to follow, followed by that many indices.

**no_vertices** is the total number of headers (the number of
holes plus 1) plus the total number of vertices for this
polygon.

**vertex_idx** is an index to the first header of the polygon
in the index list. *no_vertices* indices beginning at
*vertex_idex* define the polygon.

**material** is the tag of the material of the polygon. It
must refer to a database element of type
`miSCENE_MATERIAL`.

**convex** is a flag telling the tessellator that the polygon
has no holes and is guaranteed to be convex. This saves time
because GAP can use a very simple tessellation algorithm.

Copyright © 1986-2011 by mental images GmbH