home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * "Irit" - the 3d polygonal solid modeller. *
- * *
- * Written by: Gershon Elber Ver 0.2, Mar. 1990 *
- ******************************************************************************
- * Definitions, local to module, of the polygon convexity handler. *
- *****************************************************************************/
-
- #ifndef CONVEX_LH
- #define CONVEX_LH
-
- /* Used to hold edges (V | V -> Pnext) that intersect with level y = Ylevel. */
- typedef struct InterYVrtxList {
- ByteType InterYType;
- struct VertexStruct *V;
- struct InterYVrtxList *Pnext;
- } InterYVrtxList;
-
- #define INTER_Y_NONE 0 /* Y level intersection type. */
- #define INTER_Y_START 1
- #define INTER_Y_MIDDLE 2
-
- #define LOOP_ABOVE_Y 0 /* Type of open loops extracted from polygon. */
- #define LOOP_BELOW_Y 1
-
- /* Used to sort and combine the polygons above Ylevel together if possible. */
- typedef struct SortPolysInX {
- struct VertexStruct *VMinX, *VMaxX;
- int Reverse; /* If TRUE than VMinX vertex is AFTER VMaxX vertex. */
- } SortPolysInX;
-
- /* The following are temporary flags used to mark vertices that were visited */
- /* by the loop tracing, at list once. As each vertex may be visited two at */
- /* the most (as starting & as end point of open loop), this is enough. */
- /* INTER_TAG is used to mark vertices that created brand new with intersected*/
- /* with the line y = Ylevel. Those are used to detect INTERNAL edges - if */
- /* at list one end of it is INTER_TAG, that edge is INTERNAL (see Irit.h). */
- #define INTER_TAG 0x40
- #define VISITED_TAG 0x80
-
- #define IS_INTER_VRTX(Vrtx) ((Vrtx)->Tags & INTER_TAG)
- #define SET_INTER_VRTX(Vrtx) ((Vrtx)->Tags |= INTER_TAG)
- #define RST_INTER_VRTX(Vrtx) ((Vrtx)->Tags &= ~INTER_TAG)
-
- #define IS_VISITED_VRTX(Vrtx) ((Vrtx)->Tags & VISITED_TAG)
- #define SET_VISITED_VRTX(Vrtx) ((Vrtx)->Tags |= VISITED_TAG)
- #define RST_VISITED_VRTX(Vrtx) ((Vrtx)->Tags &= ~VISITED_TAG)
-
-
- #endif /* CONVEX_LH */
-