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