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

Revision 2090, 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    GLfloat x, y, z;     // Vertex coordinates
10    GLuint numTriangles; // Number of triangles
11    GLuint *triangles;   // List of triangles
12    int enable;
13                int     movable;        //      If vertex is part of a border.
14} Vertex;
15
16typedef struct _Edge {
17    GLuint u, v;         // Edge vertices
18    GLuint *triangles;   // Edge triangles
19    GLuint numTriangles; // Number of triangles
20    int enable;
21} Edge;
22
23typedef struct _Triangle {
24    GLuint              id;         // Triangle id
25    GLuint  group;        // Triangle group
26                GLuint          submesh;                // Triangle submesh     
27    GLuint              indices[3]; // Triangle vertices
28    GLuint              edges[3];   // Triangle edges
29    GLfloat             normal[3];  // Triangle normal
30    GLdouble    area;       // Triangle area
31    GLdouble    saliency;   // Triangle saliency
32    int                         enable;
33} Triangle;
34
35typedef struct _Mesh {
36    Vertex *vertices;           // Mesh vertices
37    GLuint numVertices;         // Number of vertices
38    GLuint currentNumVertices;  // Current number of vertices
39    Edge *edges;                // Mesh edges
40    GLuint numEdges;            // Number of edges
41    Triangle *triangles;        // Mesh triangles
42    GLuint numTriangles;        // Number of triangles
43    GLuint currentNumTriangles; // Current number of triangles
44} Mesh;
45
46extern GLdouble computeTriangleArea(Vertex *vertices, Triangle *t);
47extern void computeTriangleNormal(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, GLuint num, GLuint _u, GLuint _v);
51extern Edge *addEdge(Edge *list, int *n, int u, int v, int *pos);
52extern GLboolean findVertex(GLfloat *vertices, GLuint num, GLfloat x, GLfloat y, GLfloat 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, GLuint numVertices, GLuint numTriangles);
59
60extern int *trianglesAdjToEdge(Mesh *mesh, int e, int *n);
61extern int *verticesAdjToVertex(Mesh *mesh, int v, int *n);
62extern int *edgesAdjToVertex(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.