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

Revision 983, 2.3 KB checked in by gumbau, 18 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    GLfloat x, y, z;     // Vertex coordinates
10    GLuint numTriangles; // Number of triangles
11    GLuint *triangles;   // List of triangles
12    int enable;
13} Vertex;
14
15typedef struct _Edge {
16    GLuint u, v;         // Edge vertices
17    GLuint *triangles;   // Edge triangles
18    GLuint numTriangles; // Number of triangles
19    int enable;
20} Edge;
21
22typedef struct _Triangle {
23    GLuint              id;         // Triangle id
24                GLuint          submesh;                // Triangle submesh     
25    GLuint              indices[3]; // Triangle vertices
26    GLuint              edges[3];   // Triangle edges
27    GLfloat             normal[3];  // Triangle normal
28    GLdouble    area;       // Triangle area
29    GLdouble    saliency;   // Triangle saliency
30    int                         enable;
31} Triangle;
32
33typedef struct _Mesh {
34    Vertex *vertices;           // Mesh vertices
35    GLuint numVertices;         // Number of vertices
36    GLuint currentNumVertices;  // Current number of vertices
37    Edge *edges;                // Mesh edges
38    GLuint numEdges;            // Number of edges
39    Triangle *triangles;        // Mesh triangles
40    GLuint numTriangles;        // Number of triangles
41    GLuint currentNumTriangles; // Current number of triangles
42} Mesh;
43
44extern GLdouble computeTriangleArea(Vertex *vertices, Triangle *t);
45extern void computeTriangleNormal(Vertex *vertices, Triangle *t);
46
47extern int findEdge(Edge *e, GLuint num, GLuint _u, GLuint _v);
48extern GLboolean findVertex(GLfloat *vertices, GLuint num, GLfloat x, GLfloat y, GLfloat z, int *pos);
49
50extern Mesh *initMesh(GLMmodel* pmodel);
51extern void deleteMesh(Mesh *mesh);
52extern void printMesh(Mesh *mesh);
53extern void saveModel(char *filename, GLMmodel* pmodel, Mesh *mesh);
54extern void updateModel(GLMmodel* pmodel, Mesh *mesh, GLuint numVertices, GLuint numTriangles);
55
56extern int *trianglesAdjToEdge(Mesh *mesh, int e, int *n);
57extern int *trianglesAdjToVertex(Mesh *mesh, int v, int *n);
58extern int *verticesAdjToVertex(Mesh *mesh, int v, int *n);
59extern int *edgesAdjToVertex(Mesh *mesh, int v, int *n);
60extern int *edgesAdjToVertices(Mesh *mesh, int *vertices, int numVertices, int *n);
61
62extern void printItemList(int *list, int n);
63extern int findItem(int *list, int n, int item);
64extern void addItem(int *list, int *n, int item);
65
66
67}
68
69#endif
Note: See TracBrowser for help on using the repository browser.