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

Revision 2127, 2.5 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                int     movable;        //      If vertex is part of a border.
16} Vertex;
17
18typedef struct _Edge {
19    int u, v;         // Edge vertices
20    int enable;
21} Edge;
22
23typedef struct _Triangle {
24    int         id;         // Triangle id
25    int  group;        // Triangle group
26                int             submesh;                // Triangle submesh     
27    int         indices[3]; // Triangle vertices
28    float               normal[3];  // Triangle normal
29    double      area;       // Triangle area
30    double      saliency;   // Triangle saliency
31    int                         enable;
32} Triangle;
33
34typedef struct _Mesh {
35    Vertex *vertices;           // Mesh vertices
36    int numVertices;         // Number of vertices
37    int currentNumVertices;  // Current number of vertices
38    Edge *edges;                // Mesh edges
39    int numEdges;            // Number of edges
40    Triangle *triangles;        // Mesh triangles
41    int numTriangles;        // Number of triangles
42    int currentNumTriangles; // Current number of triangles
43} Mesh;
44
45extern GLdouble computeTriangleArea(Vertex *vertices, Triangle *t);
46extern double computeEdgeLength(Vertex *vertices, int u, int v);
47extern void computeTriangleNormal(Vertex *vertices, Triangle *t);
48extern double computeTriangleVolume(Vertex *vertices, Triangle *t);
49
50extern Vertex *addVertex(Vertex *list, int *n, float x, float y, float z, int *pos);
51extern int findEdge(Edge *e, int num, int _u, int _v);
52extern Edge *addEdge(Edge *list, int *n, int u, int v, int *pos);
53extern GLboolean findVertex(float *vertices, int num, float x, float y, float z, int *pos);
54
55extern Mesh *initMesh(GLMmodel* pmodel);
56extern void deleteMesh(Mesh *mesh);
57extern void printMesh(Mesh *mesh);
58extern void saveModel(char *filename, GLMmodel* pmodel, Mesh *mesh);
59extern void updateModel(GLMmodel* pmodel, Mesh *mesh, int numVertices, int numTriangles);
60
61extern int *trianglesAdjToEdge(Mesh *mesh, int e, int *n);
62extern int *verticesAdjToVertex(Mesh *mesh, int v, int *n);
63extern int *edgesAdjToVertices(Mesh *mesh, int *vertices, int numVertices, int *n);
64
65// list of integers
66extern void printItemList(int *list, int n);
67extern int findItem(int *list, int n, int item);
68extern void addItem(int *list, int *n, int item);
69extern void delItem(int *list, int *n, int item);
70
71
72}
73
74#endif
Note: See TracBrowser for help on using the repository browser.