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

Revision 2323, 2.6 KB checked in by gumbau, 18 years ago (diff)
RevLine 
[983]1#ifndef __mesh_h_
2#define __mesh_h_
3
4#include "glm.h"
5namespace       VMI
6{
7
8typedef struct _Vertex {
[2127]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;
[983]14    int enable;
15} Vertex;
16
17typedef struct _Edge {
[2127]18    int u, v;         // Edge vertices
[983]19    int enable;
20} Edge;
21
22typedef struct _Triangle {
[2127]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
[983]30    int                         enable;
31} Triangle;
32
33typedef struct _Mesh {
34    Vertex *vertices;           // Mesh vertices
[2127]35    int numVertices;         // Number of vertices
36    int currentNumVertices;  // Current number of vertices
[983]37    Edge *edges;                // Mesh edges
[2127]38    int numEdges;            // Number of edges
[983]39    Triangle *triangles;        // Mesh triangles
[2127]40    int numTriangles;        // Number of triangles
41    int currentNumTriangles; // Current number of triangles
[983]42} Mesh;
43
44extern GLdouble computeTriangleArea(Vertex *vertices, Triangle *t);
[2127]45extern double computeEdgeLength(Vertex *vertices, int u, int v);
[983]46extern void computeTriangleNormal(Vertex *vertices, Triangle *t);
[2127]47extern double computeTriangleVolume(Vertex *vertices, Triangle *t);
[983]48
[2323]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
[2090]53extern Vertex *addVertex(Vertex *list, int *n, float x, float y, float z, int *pos);
[2127]54extern int findEdge(Edge *e, int num, int _u, int _v);
[2090]55extern Edge *addEdge(Edge *list, int *n, int u, int v, int *pos);
[2127]56extern GLboolean findVertex(float *vertices, int num, float x, float y, float z, int *pos);
[983]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);
[2127]62extern void updateModel(GLMmodel* pmodel, Mesh *mesh, int numVertices, int numTriangles);
[983]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
[2090]68// list of integers
[983]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);
[2090]72extern void delItem(int *list, int *n, int item);
[983]73
74
75}
76
77#endif
Note: See TracBrowser for help on using the repository browser.