source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/vmi/include/change.h @ 2090

Revision 2090, 2.6 KB checked in by gumbau, 17 years ago (diff)
Line 
1#ifndef __change_h_
2#define __change_h_
3
4#include        "mesh.h"
5#include        <vector>
6#include        <map>
7#include        <GeoMeshSimpSequence.h>
8
9namespace       VMI
10{
11        typedef std::vector<int> INTVECTOR;
12
13        typedef struct change
14        {
15                int e;
16                int u, v;           // Edge
17                int numDel;         // Number of deleted triangles
18                Triangle *deleted;  // List of deleted triangles
19                int numMod;         // Number of modified triangles
20                Triangle *modified; // List of triangles deleted 
21        } Change;
22
23        /*
24        // Represents a simplification step in the sequence.
25        struct vmiStep
26        {
27                unsigned int    mV0;
28                unsigned int    mV1;
29                unsigned int    mT0;
30                unsigned int    mT1;
31                float x;
32                float   y;
33                float   z;
34               
35                std::vector<unsigned int>       mModfaces;
36
37                //      Indicates the the step is obligatory to execute
38                //      joined width the following step.
39                unsigned int obligatory;
40        };
41
42        // Stores all the simplification steps.
43        extern  std::vector<vmiStep> mVMISteps;
44
45        //      Vertex info.
46        struct  GeoVertex
47        {
48                Index           id;
49                Index           bonefrom;
50                Vector3 position;
51                Vector2 texcoord;
52                Vector3 normal;
53        };
54
55        //      Vertices added in simplification.
56        std::vector<GeoVertex>  mNewVertices;
57        */
58
59        // Stores all the simplification steps.
60        extern  Geometry::MeshSimplificationSequence *mSequence;
61
62        extern Change *createChange (Mesh *mesh, int e);
63        extern Change *newChange (Mesh *mesh, int u, int v);
64        extern void writeChange(FILE* file, Change *c);
65        extern void deleteChange(Change *c);
66        extern void printChange(Change *c);
67
68        extern void modifyTriangle(Triangle *t, int c, int p);
69        extern int isATriangleToModify(Triangle *t, int c);
70        extern Triangle *getTrianglesToModify(Mesh *mesh, Change *c, GLuint *numMod);
71        extern int isATriangleToDelete(Triangle *t, int c, int p);
72        extern Triangle *getTrianglesToDelete(Mesh *mesh, Change *c, GLuint *numDel);
73
74        extern void modifyTriangles(Mesh *mesh, Change *c);
75        extern void unmodifyTriangles(Mesh *mesh, Change *c);
76        extern void deleteTriangles(Mesh *mesh, Change *c);
77        extern void undeleteTriangles(Mesh *mesh, Change *c);
78
79        extern void printList(Triangle *list, int n);
80        extern void deleteItem(Triangle *list, int *n, int item);
81
82        extern void doChange(Mesh *mesh, Change *c);
83        extern void undoChange(Mesh *mesh, Change *c);
84        extern void computeChange(Mesh *mesh, Change *c);
85
86        extern void modifyEdges(Mesh *mesh, Change *c);
87  extern void deleteEdges(Mesh *mesh, Change *c);
88
89        //      Save simplification sequence in Geometry Game Tools format.
90        extern void     saveSimplificationSequence(Change       *c, int obligatory);
91
92        //extern std::map<int, INTVECTOR> inversemap;
93        extern void swap(int *i, int *j);
94        extern int hasEdge(Triangle *t, int e);
95        extern void getEdges(Triangle *t, Change *c, int *d, int *a);
96}
97#endif
Note: See TracBrowser for help on using the repository browser.