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

Revision 2323, 2.6 KB checked in by gumbau, 17 years ago (diff)
Line 
1#ifndef __mesh_h_
2#define __mesh_h_
3
4#include "glm.h"
5namespace       VMI
6{
7
8typedef struct _Vertex {
9    float x, y, z;     // Vertex coordinates
10    int numTriangles; // Number of triangles
11    int *triangles;   // List of triangles
12                int numEdges;
13          int *edges;
14    int enable;
15} Vertex;
16
17typedef struct _Edge {
18    int u, v;         // Edge vertices
19    int enable;
20} Edge;
21
22typedef struct _Triangle {
23    int         id;         // Triangle id
24    int  group;        // Triangle group
25                int             submesh;                // Triangle submesh     
26    int         indices[3]; // Triangle vertices
27    float               normal[3];  // Triangle normal
28    double      area;       // Triangle area
29    double      saliency;   // Triangle saliency
30    int                         enable;
31} Triangle;
32
33typedef struct _Mesh {
34    Vertex *vertices;           // Mesh vertices
35    int numVertices;         // Number of vertices
36    int currentNumVertices;  // Current number of vertices
37    Edge *edges;                // Mesh edges
38    int numEdges;            // Number of edges
39    Triangle *triangles;        // Mesh triangles
40    int numTriangles;        // Number of triangles
41    int currentNumTriangles; // Current number of triangles
42} Mesh;
43
44extern GLdouble computeTriangleArea(Vertex *vertices, Triangle *t);
45extern double computeEdgeLength(Vertex *vertices, int u, int v);
46extern void computeTriangleNormal(Vertex *vertices, Triangle *t);
47extern double computeTriangleVolume(Vertex *vertices, Triangle *t);
48
49extern int addEdge(Mesh *mesh, int u, int v);
50extern int addTriangle(Mesh *mesh, int curGroup, int v1, int v2, int v3);
51extern int addVertex(Mesh *mesh, float x, float y, float z);
52
53extern Vertex *addVertex(Vertex *list, int *n, float x, float y, float z, int *pos);
54extern int findEdge(Edge *e, int num, int _u, int _v);
55extern Edge *addEdge(Edge *list, int *n, int u, int v, int *pos);
56extern GLboolean findVertex(float *vertices, int num, float x, float y, float z, int *pos);
57
58extern Mesh *initMesh(GLMmodel* pmodel);
59extern void deleteMesh(Mesh *mesh);
60extern void printMesh(Mesh *mesh);
61extern void saveModel(char *filename, GLMmodel* pmodel, Mesh *mesh);
62extern void updateModel(GLMmodel* pmodel, Mesh *mesh, int numVertices, int numTriangles);
63
64extern int *trianglesAdjToEdge(Mesh *mesh, int e, int *n);
65extern int *verticesAdjToVertex(Mesh *mesh, int v, int *n);
66extern int *edgesAdjToVertices(Mesh *mesh, int *vertices, int numVertices, int *n);
67
68// list of integers
69extern void printItemList(int *list, int n);
70extern int findItem(int *list, int n, int item);
71extern void addItem(int *list, int *n, int item);
72extern void delItem(int *list, int *n, int item);
73
74
75}
76
77#endif
Note: See TracBrowser for help on using the repository browser.