UnityMol  1.0.25beta
MarchingCubes.h
Go to the documentation of this file.
1 //
2 // Linearize OS specific macros
3 //
4 #if defined(__unix__) || defined(__linux__) || defined(__APPLE__) || defined(__MACH__)
5 #define OS_UNIX
6 #endif
7 
8 #if defined(__APPLE__) || defined(__MACH__)
9 #define OS_OSX
10 #endif
11 
12 #if defined(_MSC_VER)
13 #define OS_WINDOWS
14 #endif
15 
16 //
17 // API export macro
18 //
19 #if defined(OS_OSX)
20 #define API __attribute__((visibility("default")))
21 #elif defined(OS_WINDOWS)
22 #define API __declspec(dllexport)
23 #else
24 #define API
25 #endif
26 
27 
28 typedef struct {
29  int x;
30  int y;
31  int z;
32 } int3;
33 
34 typedef struct {
35  float x;
36  float y;
37  float z;
38 } float3;
39 
40 
41 typedef struct {
42  int3 p[8];
43  float3 n[8];
44  float val[8];
45 } GRIDCELL;
46 
47 typedef struct {
48  float3 p[3]; /* Vertices */
49  float3 c; /* Centroid */
50  float3 n[3]; /* Normal */
51 } TRIANGLE;
52 
53 #define ABS(x) (x < 0 ? -(x) : (x))
54 
55 // Prototypes
56 int PolygoniseCube(GRIDCELL, float, TRIANGLE *);
57 float3 VertexInterp(float, int3, int3, float, float);
58 TRIANGLE *marchingCubes(const float *data, const int3 gridDim, int *nbTri);
59 
60 
61 //Unity calls these functions
62 extern "C" {
63  API void ComputeMesh(const float *gridVal, const int sizeX, const int sizeY, const int sizeZ, const float isoValue,
64  int *vertnumber, int *facenumber);
65  API float* getVertices();
66  API int* getTriangles();
67  API void freeMeshData();
68 }
float z
Definition: MarchingCubes.h:37
Definition: MarchingCubes.h:34
int PolygoniseCube(GRIDCELL, float, TRIANGLE *)
Definition: MarchingCubes.cpp:117
Definition: MarchingCubes.h:28
API float * getVertices()
Definition: MarchingCubes.cpp:619
#define API
Definition: MarchingCubes.h:24
API void ComputeMesh(const float *gridVal, const int sizeX, const int sizeY, const int sizeZ, const float isoValue, int *vertnumber, int *facenumber)
Definition: MarchingCubes.cpp:587
API int * getTriangles()
Definition: MarchingCubes.cpp:622
float y
Definition: MarchingCubes.h:36
float3 c
Definition: MarchingCubes.h:49
TRIANGLE * marchingCubes(const float *data, const int3 gridDim, int *nbTri)
API void freeMeshData()
Definition: MarchingCubes.cpp:625
Definition: MarchingCubes.h:47
Definition: MarchingCubes.h:41
int y
Definition: MarchingCubes.h:30
float3 VertexInterp(float, int3, int3, float, float)
Definition: MarchingCubes.cpp:543
int z
Definition: MarchingCubes.h:31
int x
Definition: MarchingCubes.h:29
float x
Definition: MarchingCubes.h:35