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