#ifndef __change_h_ #define __change_h_ #include "mesh.h" #include #include #include namespace VMI { typedef std::vector INTVECTOR; typedef struct change { int e; int u, v; // Edge int numDel; // Number of deleted triangles Triangle *deleted; // List of deleted triangles int numMod; // Number of modified triangles Triangle *modified; // List of triangles deleted } Change; /* // Represents a simplification step in the sequence. struct vmiStep { unsigned int mV0; unsigned int mV1; unsigned int mT0; unsigned int mT1; float x; float y; float z; std::vector mModfaces; // Indicates the the step is obligatory to execute // joined width the following step. unsigned int obligatory; }; // Stores all the simplification steps. extern std::vector mVMISteps; // Vertex info. struct GeoVertex { Index id; Index bonefrom; Vector3 position; Vector2 texcoord; Vector3 normal; }; // Vertices added in simplification. std::vector mNewVertices; */ // Stores all the simplification steps. extern Geometry::MeshSimplificationSequence *mSequence; extern Change *createChange (Mesh *mesh, int e); extern Change *newChange (Mesh *mesh, int u, int v); extern void writeChange(FILE* file, Change *c); extern void deleteChange(Change *c); extern void printChange(Change *c); extern void modifyTriangle(Triangle *t, int c, int p); extern int isATriangleToModify(Triangle *t, int c); extern Triangle *getTrianglesToModify(Mesh *mesh, Change *c, int *numMod); extern int isATriangleToDelete(Triangle *t, int c, int p); extern Triangle *getTrianglesToDelete(Mesh *mesh, Change *c, int *numDel); extern void modifyTriangles(Mesh *mesh, Change *c); extern void unmodifyTriangles(Mesh *mesh, Change *c); extern void deleteTriangles(Mesh *mesh, Change *c); extern void undeleteTriangles(Mesh *mesh, Change *c); extern void printList(Triangle *list, int n); extern void deleteItem(Triangle *list, int *n, int item); extern void doChange(Mesh *mesh, Change *c); extern void undoChange(Mesh *mesh, Change *c); extern void computeChange(Mesh *mesh, Change *c); extern void modifyEdges(Mesh *mesh, Change *c); extern int find(int *edges, int num, int v_); extern void updateEdgeAdj(Mesh *mesh, Change *c) ; // Save simplification sequence in Geometry Game Tools format. extern void saveSimplificationSequence(Change *c, int obligatory); //extern std::map inversemap; extern void swap(int *i, int *j); } #endif