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