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

Revision 1024, 2.0 KB checked in by gumbau, 18 years ago (diff)
Line 
1#ifndef __change_h_
2#define __change_h_
3
4#include        "mesh.h"
5#include        <vector>
6#include        <map>
7
8namespace       VMI
9{
10        typedef std::vector<int> INTVECTOR;
11
12        typedef struct change
13        {
14                int e;
15                int u, v;           // Edge
16                int numDel;         // Number of deleted triangles
17                Triangle *deleted;  // List of deleted triangles
18                int numMod;         // Number of modified triangles
19                Triangle *modified; // List of triangles deleted 
20        } Change;
21
22        // Represents a simplification step in the sequence.
23        struct vmiStep
24        {
25                unsigned int    mV0;
26                unsigned int    mV1;
27                unsigned int    mT0;
28                unsigned int    mT1;
29                float x;
30                float   y;
31                float   z;
32               
33                std::vector<unsigned int>       mModfaces;
34
35                //      Indicates the the step is obligatory to execute
36                //      joined width the following step.
37                unsigned int obligatory;
38        };
39
40        // Stores all the simplification steps.
41        extern  std::vector<vmiStep> mVMISteps;
42
43        extern Change *createChange (Mesh *mesh, int e);
44        extern void writeChange(FILE* file, Change *c);
45        extern void deleteChange(Change *c);
46        extern void printChange(Change *c);
47
48        extern void modifyTriangle(Triangle *t, int c, int p);
49        extern int isATriangleToModify(Triangle *t, int c, int p);
50        extern int getTrianglesToModify(Mesh *mesh, int c, int p, Triangle *modified);
51        extern int isATriangleToDelete(Triangle *t, int c, int p);
52        extern int getTrianglesToDelete(Mesh *mesh, int numMod, Triangle *modified, Triangle *deleted, int c, int p);
53
54        extern void modifyTriangles(Mesh *mesh, Change *c);
55        extern void unmodifyTriangles(Mesh *mesh, Change *c);
56        extern void deleteTriangles(Mesh *mesh, Change *c);
57        extern void undeleteTriangles(Mesh *mesh, Change *c);
58
59        extern void printList(Triangle *list, int n);
60        extern void deleteItem(Triangle *list, int *n, int item);
61
62        extern void doChange(Mesh *mesh, Change *c);
63        extern void undoChange(Mesh *mesh, Change *c);
64        extern void computeChanges(Mesh *mesh, Change *c);
65
66        //      Save simplification sequence in Geometry Game Tools format.
67        extern void     saveSimplificationSequence(Change       *c);
68
69        extern std::map<int, INTVECTOR> inversemap;
70}
71
72#endif
Note: See TracBrowser for help on using the repository browser.