/********************************************************************/ /* STRIPE: converting a polygonal model to triangle strips Francine Evans, 1996. SUNY @ Stony Brook Advisors: Steven Skiena and Amitabh Varshney */ /********************************************************************/ /*---------------------------------------------------------------------*/ /* STRIPE: polverts.h -----------------------------------------------------------------------*/ #ifndef _POLVERTS_H #define _POLVERTS_H #ifdef HAVE_CONFIG_H # include #endif #include "queue.h" #ifdef HAVE_STDLIB_H # include #else # include #endif typedef struct adjacencies { Node ListNode; int face_id; } ADJACENCIES,*P_ADJACENCIES; typedef struct FVerts { Node ListNode; int *pPolygon; int nPolSize; int nId; } F_VERTS, *PF_VERTS; /*Every time we need to use this, cast it ( ListInfo*)*/ typedef struct FEdges { Node ListNode; int edge[3]; }F_EDGES,*PF_EDGES; typedef struct FFaces { Node ListNode; int *pPolygon; int *pNorms; int seen; int seen2; int seen3; int nPolSize; F_EDGES **VertandId; int *marked; int *walked; } F_FACES,*PF_FACES; typedef struct Strips { Node ListNode; int face_id; } Strips,*P_STRIPS; struct vert_added { int num; int *normal; }; /* external functions */ void Find_Adjacencies(int num_faces); void Test_Adj_Struct(); void Test_SGI_Struct(); void Write_Edges(); void Build_SGI_Table(int num_verts,int num_faces); void Save_Walks(int numfaces); void Find_Bands(int numfaces, FILE *output_file, int *swaps, int *bands, int *cost, int *tri, int norms, int *vert_norms, int texture, int *vert_texture); void Save_Rest(int *numfaces); void Assign_Walk(int lastvert, PF_FACES temp2, int front_walk,int y, int back_walk); void Save_Walks(int numfaces); /* Globals */ extern ListHead **PolVerts; extern ListHead **PolFaces; extern ListHead **PolEdges; extern ListHead *array[60]; extern int id_array[60]; extern ListHead *strips[1]; extern ListHead *all_strips[100000]; /* Assume max 100000 strips */ #endif _POLVERTS_H