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

Revision 2194, 2.4 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 Vertex *addVertex(Vertex *list, int *n, float x, float y, float z, int *pos);
50extern int findEdge(Edge *e, int num, int _u, int _v);
51extern Edge *addEdge(Edge *list, int *n, int u, int v, int *pos);
52extern GLboolean findVertex(float *vertices, int num, float x, float y, float z, int *pos);
53
54extern Mesh *initMesh(GLMmodel* pmodel);
55extern void deleteMesh(Mesh *mesh);
56extern void printMesh(Mesh *mesh);
57extern void saveModel(char *filename, GLMmodel* pmodel, Mesh *mesh);
58extern void updateModel(GLMmodel* pmodel, Mesh *mesh, int numVertices, int numTriangles);
59
60extern int *trianglesAdjToEdge(Mesh *mesh, int e, int *n);
61extern int *verticesAdjToVertex(Mesh *mesh, int v, int *n);
62extern int *edgesAdjToVertices(Mesh *mesh, int *vertices, int numVertices, int *n);
63
64// list of integers
65extern void printItemList(int *list, int n);
66extern int findItem(int *list, int n, int item);
67extern void addItem(int *list, int *n, int item);
68extern void delItem(int *list, int *n, int item);
69
70
71}
72
73#endif
Note: See TracBrowser for help on using the repository browser.