summaryrefslogtreecommitdiff
path: root/inc/Voxel_DS.hxx
blob: 84ea4fa4040a0c6a8f0df799b22eaabc1a159be0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _Voxel_DS_HeaderFile
#define _Voxel_DS_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class Voxel_Writer;
class Voxel_Reader;


//! A base class for all voxel data structures. <br>
class Voxel_DS  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  //! An empty constructor. <br>
  Standard_EXPORT   Voxel_DS();
  //! A constructor initializing the voxel model. <br>
//!          (x, y, z) - the start point of the box. <br>
//!          (x_len, y_len, z_len) - lengths in x, y and z directions along axes of a co-ordinate system. <br>
//!          (nb_x, nb_y, nb_z) - number of splits (voxels) along x, y and z directions. <br>
  Standard_EXPORT   Voxel_DS(const Standard_Real x,const Standard_Real y,const Standard_Real z,const Standard_Real x_len,const Standard_Real y_len,const Standard_Real z_len,const Standard_Integer nb_x,const Standard_Integer nb_y,const Standard_Integer nb_z);
  //! Initialization of the voxel model. <br>
//!          (x, y, z) - the start point of the box. <br>
//!          (x_len, y_len, z_len) - lengths in x, y and z directions along axes of a co-ordinate system. <br>
//!          (nb_x, nb_y, nb_z) - number of splits (voxels) along x, y and z directions. <br>//! The methods below return initial data of the voxel model. <br>
  Standard_EXPORT   virtual  void Init(const Standard_Real x,const Standard_Real y,const Standard_Real z,const Standard_Real x_len,const Standard_Real y_len,const Standard_Real z_len,const Standard_Integer nb_x,const Standard_Integer nb_y,const Standard_Integer nb_z) ;
  
  Standard_EXPORT     Standard_Real GetX() const;
  
  Standard_EXPORT     Standard_Real GetY() const;
  
  Standard_EXPORT     Standard_Real GetZ() const;
  
  Standard_EXPORT     Standard_Real GetXLen() const;
  
  Standard_EXPORT     Standard_Real GetYLen() const;
  
  Standard_EXPORT     Standard_Real GetZLen() const;
  
  Standard_EXPORT     Standard_Integer GetNbX() const;
  
  Standard_EXPORT     Standard_Integer GetNbY() const;
  
  Standard_EXPORT     Standard_Integer GetNbZ() const;
  //! Returns the center point of a voxel with co-ordinates (ix, iy, iz). <br>
  Standard_EXPORT     void GetCenter(const Standard_Integer ix,const Standard_Integer iy,const Standard_Integer iz,Standard_Real& xc,Standard_Real& yc,Standard_Real& zc) const;
  //! Finds a voxel corresponding to a 3D point. <br>
//!          Returns true if it is found. <br>
  Standard_EXPORT     Standard_Boolean GetVoxel(const Standard_Real x,const Standard_Real y,const Standard_Real z,Standard_Integer& ix,Standard_Integer& iy,Standard_Integer& iz) const;
  //! Returns x-index of a voxel corresponding to x-coordinate. <br>
  Standard_EXPORT     Standard_Boolean GetVoxelX(const Standard_Real x,Standard_Integer& ix) const;
  //! Returns y-index of a voxel corresponding to y-coordinate. <br>
  Standard_EXPORT     Standard_Boolean GetVoxelY(const Standard_Real y,Standard_Integer& iy) const;
  //! Returns z-index of a voxel corresponding to z-coordinate. <br>
  Standard_EXPORT     Standard_Boolean GetVoxelZ(const Standard_Real z,Standard_Integer& iz) const;


friend class Voxel_Writer;
friend class Voxel_Reader;



protected:



Standard_Address myData;
Standard_Real myX;
Standard_Real myY;
Standard_Real myZ;
Standard_Real myXLen;
Standard_Real myYLen;
Standard_Real myZLen;
Standard_Integer myNbX;
Standard_Integer myNbY;
Standard_Integer myNbZ;
Standard_Integer myNbXY;
Standard_Real myDX;
Standard_Real myDY;
Standard_Real myDZ;
Standard_Real myHalfDX;
Standard_Real myHalfDY;
Standard_Real myHalfDZ;


private:





};





// other Inline functions and methods (like "C++: function call" methods)


#endif