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

Revision 2127, 2.6 KB checked in by gumbau, 17 years ago (diff)
RevLine 
[983]1#ifndef __change_h_
2#define __change_h_
3
[1007]4#include        "mesh.h"
5#include        <vector>
[1024]6#include        <map>
[2090]7#include        <GeoMeshSimpSequence.h>
[983]8
[1007]9namespace       VMI
[983]10{
[1024]11        typedef std::vector<int> INTVECTOR;
12
[1007]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;
[983]22
[2090]23        /*
[1009]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;
[983]36
[1009]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
[2090]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
[1007]62        extern Change *createChange (Mesh *mesh, int e);
[2090]63        extern Change *newChange (Mesh *mesh, int u, int v);
[1007]64        extern void writeChange(FILE* file, Change *c);
65        extern void deleteChange(Change *c);
66        extern void printChange(Change *c);
[983]67
[1007]68        extern void modifyTriangle(Triangle *t, int c, int p);
[2090]69        extern int isATriangleToModify(Triangle *t, int c);
[2127]70        extern Triangle *getTrianglesToModify(Mesh *mesh, Change *c, int *numMod);
[1007]71        extern int isATriangleToDelete(Triangle *t, int c, int p);
[2127]72        extern Triangle *getTrianglesToDelete(Mesh *mesh, Change *c, int *numDel);
[983]73
[1007]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);
[983]78
[1007]79        extern void printList(Triangle *list, int n);
80        extern void deleteItem(Triangle *list, int *n, int item);
[983]81
[1007]82        extern void doChange(Mesh *mesh, Change *c);
83        extern void undoChange(Mesh *mesh, Change *c);
[2090]84        extern void computeChange(Mesh *mesh, Change *c);
[1007]85
[2090]86        extern void modifyEdges(Mesh *mesh, Change *c);
[2127]87  extern int find(int *edges, int num, int v_);
88        extern void updateEdgeAdj(Mesh *mesh, Change *c) ;
[2090]89
[1007]90        //      Save simplification sequence in Geometry Game Tools format.
[2090]91        extern void     saveSimplificationSequence(Change       *c, int obligatory);
[1024]92
[2090]93        //extern std::map<int, INTVECTOR> inversemap;
94        extern void swap(int *i, int *j);
[2127]95
[983]96}
97#endif
Note: See TracBrowser for help on using the repository browser.