35 #ifndef AIMS_PYRAMID_PYRAMID_H
36 #define AIMS_PYRAMID_PYRAMID_H
59 void save(
const std::string& name )
const;
74 template <
class T>
inline
85 template <
class T>
inline
92 int dimX = _ref->getSizeX();
93 int dimY = _ref->getSizeY();
94 int dimZ = _ref->getSizeZ();
95 int dimT = _ref->getSizeT();
97 std::vector<float> vs = _ref->getVoxelSize();
103 for (
int k = 0; k < level; k++ )
125 _ppItem[ k ]->setVoxelSize( sizeX, sizeY, sizeZ, sizeT );
129 template <
class T>
inline
140 template <
class T>
inline
147 _new_ppItem( level );
152 template <
class T>
inline
155 int x, y, z, t, k, nx, ny, nz, n;
157 int dimX = _ref->getSizeX();
158 int dimY = _ref->getSizeY();
159 int dimZ = _ref->getSizeZ();
160 int dimT = _ref->getSizeT();
167 for ( k = 0; k < _level; k++ )
171 int lowerLvlDimX = dimX ;
172 int lowerLvlDimY = dimY ;
173 int lowerLvlDimZ = dimZ ;
185 for ( t = 0; t < dimT; t++ )
186 for ( z = 0; z < dimZ; z++ )
187 for ( y = 0; y < dimY; y++ )
188 for ( x = 0; x < dimX; x++ )
191 for ( nz = 0; nz < 2; nz++ )
192 for ( ny = 0; ny < 2; ny++ )
193 for ( nx = 0; nx < 2; nx++ )
195 tab(n++) = pDown->at(
std::min(2 * x + nx, lowerLvlDimX - 1 ),
196 std::min(2 * y + ny, lowerLvlDimY - 1 ),
197 std::min(2 * z + nz, lowerLvlDimZ - 1 ), t );
199 pUp->at( x, y, z, t ) = _func.doit( tab );
206 template <
class T>
inline
210 ASSERT( level <= _level );
215 return _ppItem[ level - 1 ];
219 template <
class T>
inline
222 for (
int k = 0; k < _level; k++ )
225 sprintf( ext,
"%d", k );
226 std::string outName = name + std::string( ext );
228 dataW.
write( *item( k ) );
carto::rc_ptr< carto::Volume< T > > * _ppItem
carto::rc_ptr< carto::Volume< T > > _ref
const carto::rc_ptr< carto::Volume< T > > item(int level) const
void save(const std::string &name) const
void _new_ppItem(int level)
const PyramidFunc< T > & _func
Pyramid(const PyramidFunc< T > &func)
void setRef(carto::rc_ptr< carto::Volume< T > > ref)
virtual bool write(const T &obj, bool ascii=false, const std::string *format=0)
float min(float x, float y)
reference_wrapper< T > ref(T &ref)