gft_scene64f.h
Go to the documentation of this file.
1 
2 #ifndef _GFT_SCENE64F_H_
3 #define _GFT_SCENE64F_H_
4 
5 #include "gft_common.h"
6 
7 namespace gft{
8  namespace Scene64f{
9 
15  typedef struct _scene64f {
16  double *data;
17  double ***array;
19  float dx,dy,dz;
20  double maxval;
21  int n;
22  } Scene64f;
23 
27  Scene64f *Create(int xsize,int ysize,int zsize);
31  Scene64f *Create(Scene64f *scn);
35  void Destroy(Scene64f **scn);
36  void Copy(Scene64f *dest, Scene64f *src);
37  void Copy(Scene64f *dest, Scene64f *src, Voxel v);
41  Scene64f *Clone(Scene64f *scn);
42  Scene64f *SubScene(Scene64f *scn, Voxel l, Voxel h);
44  int xl, int yl, int zl,
45  int xh, int yh, int zh);
46  void Fill(Scene64f *scn, double value);
47 
48  //Scene64f *Read(char *filename);
49  void Write(Scene64f *scn, char *filename);
50 
51  inline double GetValue(Scene64f *scn, Voxel v);
52  inline double GetValue(Scene64f *scn, int p);
53  inline double GetValue(Scene64f *scn, int x, int y, int z);
54  double GetValue_trilinear(Scene64f *scn, float x, float y, float z);
55  double GetValue_nn(Scene64f *scn, float x, float y, float z);
56 
57  inline int GetAddressX(Scene64f *scn, int p);
58  inline int GetAddressY(Scene64f *scn, int p);
59  inline int GetAddressZ(Scene64f *scn, int p);
60  inline int GetVoxelAddress(Scene64f *scn, Voxel v);
61  inline int GetVoxelAddress(Scene64f *scn, int x, int y, int z);
62 
63  inline bool IsValidVoxel(Scene64f *scn, int x, int y, int z);
64  inline bool IsValidVoxel(Scene64f *scn, Voxel v);
65 
66  double GetMaximumValue(Scene64f *scn);
67  double GetMinimumValue(Scene64f *scn);
68 
69  Scene64f *MBB(Scene64f *scn);
70  void MBB(Scene64f *scn, Voxel *l, Voxel *h);
71 
72  Scene64f *AddFrame(Scene64f *scn, int sz, double value);
73  Scene64f *RemFrame(Scene64f *fscn, int sz);
74 
75 
76  //---------inline definitions------------------
77  inline bool IsValidVoxel(Scene64f *scn, int x, int y, int z){
78  if((x >= 0)&&(x < scn->xsize)&&
79  (y >= 0)&&(y < scn->ysize)&&
80  (z >= 0)&&(z < scn->zsize))
81  return(true);
82  else
83  return(false);
84  }
85 
86  inline bool IsValidVoxel(Scene64f *scn, Voxel v){
87  if((v.c.x >= 0)&&(v.c.x < scn->xsize)&&
88  (v.c.y >= 0)&&(v.c.y < scn->ysize)&&
89  (v.c.z >= 0)&&(v.c.z < scn->zsize))
90  return(true);
91  else
92  return(false);
93  }
94 
95  inline double GetValue(Scene64f *scn, Voxel v){
96  return (scn->array[v.c.z][v.c.y][v.c.x]);
97  }
98  inline double GetValue(Scene64f *scn, int p){
99  return (scn->data[p]);
100  }
101  inline double GetValue(Scene64f *scn, int x, int y, int z){
102  return (scn->array[z][y][x]);
103  }
104 
105  inline int GetAddressX(Scene64f *scn, int p){
106  return ((p%(scn->xsize*scn->ysize))%scn->xsize);
107  }
108  inline int GetAddressY(Scene64f *scn, int p){
109  return ((p%(scn->xsize*scn->ysize))/scn->xsize);
110  }
111  inline int GetAddressZ(Scene64f *scn, int p){
112  return (p/(scn->xsize*scn->ysize));
113  }
114  inline int GetVoxelAddress(Scene64f *scn, Voxel v){
115  return (v.c.x + v.c.y*scn->xsize +
116  v.c.z*scn->xsize*scn->ysize);
117  }
118  inline int GetVoxelAddress(Scene64f *scn, int x, int y, int z){
119  return (x + y*scn->xsize + z*scn->xsize*scn->ysize);
120  }
121 
122 
123  } //end Scene64f namespace
124 } //end gft namespace
125 
126 
127 #include "gft_scene16.h"
128 #include "gft_scene8.h"
129 
130 namespace gft{
131  namespace Scene64f{
132 
135 
136  } //end Scene64f namespace
137 } //end gft namespace
138 
139 
140 #endif
double maxval
Definition: gft_scene64f.h:20
Definition: gft_scene64f.h:15
double *** array
Definition: gft_scene64f.h:17
int y
Definition: gft_common.h:109
int GetAddressZ(Scene64f *scn, int p)
Definition: gft_scene64f.h:111
Scene64f * AddFrame(Scene64f *scn, int sz, double value)
Definition: gft_scene64f.cpp:350
Definition: gft_common.h:106
Scene64f * RemFrame(Scene64f *fscn, int sz)
Definition: gft_scene64f.cpp:382
void Write(Scene64f *scn, char *filename)
Definition: gft_scene64f.cpp:207
Scene64f * SubScene(Scene64f *scn, Voxel l, Voxel h)
Definition: gft_scene64f.cpp:91
double GetMinimumValue(Scene64f *scn)
Definition: gft_scene64f.cpp:296
double GetValue_nn(Scene64f *scn, float x, float y, float z)
Definition: gft_scene64f.cpp:269
void Copy(Scene64f *dest, Scene64f *src)
Definition: gft_scene64f.cpp:141
void Destroy(Scene64f **scn)
A destructor.
Definition: gft_scene64f.cpp:68
int GetVoxelAddress(Scene64f *scn, Voxel v)
Definition: gft_scene64f.h:114
struct gft::Scene64f::_scene64f Scene64f
struct gft::Scene8::_scene8 Scene8
bool IsValidVoxel(Scene64f *scn, int x, int y, int z)
Definition: gft_scene64f.h:77
double * data
Definition: gft_scene64f.h:16
float dx
Definition: gft_scene64f.h:19
int GetAddressY(Scene64f *scn, int p)
Definition: gft_scene64f.h:108
int ysize
Definition: gft_scene64f.h:18
Scene64f * Create(int xsize, int ysize, int zsize)
A constructor.
Definition: gft_scene64f.cpp:7
Scene64f * Clone(Scene64f *scn)
A copy constructor.
Definition: gft_scene64f.cpp:81
void Fill(Scene64f *scn, int value)
Definition: gft_scene64f.cpp:183
Header file for common definitions and function prototypes.
Scene8::Scene8 * ConvertTo8(Scene64f *scn)
Definition: gft_scene64f.cpp:423
double GetValue_trilinear(Scene64f *scn, float x, float y, float z)
Definition: gft_scene64f.cpp:227
int n
Definition: gft_scene64f.h:21
float dy
Definition: gft_scene64f.h:19
double GetValue(Scene64f *scn, Voxel v)
Definition: gft_scene64f.h:95
float dz
Definition: gft_scene64f.h:19
int z
Definition: gft_common.h:109
int x
Definition: gft_common.h:109
struct gft::_voxel::@2 c
int xsize
Definition: gft_scene64f.h:18
void MBB(Scene64f *scn, Voxel *l, Voxel *h)
Definition: gft_scene64f.cpp:309
int GetMaximumValue(Scene64f *scn)
Definition: gft_scene64f.cpp:283
Scene16::Scene16 * ConvertTo16(Scene64f *scn)
Definition: gft_scene64f.cpp:407
int GetAddressX(Scene64f *scn, int p)
Definition: gft_scene64f.h:105
struct gft::Scene16::_scene16 Scene16
int zsize
Definition: gft_scene64f.h:18