14#ifndef __stir_VoxelsOnCartesianGrid_H__
15#define __stir_VoxelsOnCartesianGrid_H__
34template <
typename elemT>
35class PixelsOnCartesianGrid;
47#ifdef STIR_COMPILING_SWIG_WRAPPER
125 const float zoom = 1.F,
137 const float zoom = 1.F,
182 inline int get_y_size()
const;
184 inline int get_z_size()
const;
186 inline int get_min_x()
const;
188 inline int get_min_y()
const;
190 inline int get_min_z()
const;
192 inline int get_max_x()
const;
194 inline int get_max_y()
const;
196 inline int get_max_z()
const;
208 inline self_type& operator+=(
const self_type& x)
210 base_type::operator+=(x);
213 inline self_type& operator-=(
const self_type& x)
215 base_type::operator-=(x);
218 inline self_type& operator*=(
const self_type& x)
220 base_type::operator*=(x);
223 inline self_type& operator/=(
const self_type& x)
225 base_type::operator/=(x);
228 inline self_type& operator+=(
const elemT x)
230 base_type::operator+=(x);
233 inline self_type& operator-=(
const elemT x)
235 base_type::operator-=(x);
238 inline self_type& operator*=(
const elemT x)
240 base_type::operator*=(x);
243 inline self_type& operator/=(
const elemT x)
245 base_type::operator/=(x);
248 inline self_type operator+(
const self_type& x)
const
253 inline self_type operator+(
const elemT x)
const
258 inline self_type operator-(
const self_type& x)
const
263 inline self_type operator-(
const elemT x)
const
268 inline self_type operator*(
const self_type& x)
const
273 inline self_type operator*(
const elemT x)
const
278 inline self_type operator/(
const self_type& x)
const
283 inline self_type operator/(
const elemT x)
const
291 void construct_from_projdata_info(
const shared_ptr<const ExamInfo>& exam_info_sptr_v,
292 const ProjDataInfo& proj_data_info,
293 const CartesianCoordinate3D<float>& zooms,
294 const CartesianCoordinate3D<float>& origin,
295 const CartesianCoordinate3D<int>& sizes);
defines the stir::CartesianCoordinate3D<coordT> class
defines the stir::DiscretisedDensityOnCartesianGrid class
inline implementations for the stir::VoxelsOnCartesianGrid class
This class defines multi-dimensional (numeric) arrays.
Definition Array.h:78
class BasicCoordinate<int num_dimensions, typename coordT> defines num_dimensions -dimensional coordi...
Definition BasicCoordinate.h:57
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
DiscretisedDensityOnCartesianGrid()
This class defines ranges which can be 'irregular'.
Definition IndexRange.h:69
This class is used to represent pixelised densities on a rectangular grid (2D).
Definition PixelsOnCartesianGrid.h:41
An (abstract base) class that contains information on the projection data.
Definition ProjDataInfo.h:70
void set_voxel_size(const BasicCoordinate< 3, float > &)
is the same as set_grid_spacing()
Definition VoxelsOnCartesianGrid.cxx:322
PixelsOnCartesianGrid< elemT > get_plane(const int z) const
Extract a single plane.
Definition VoxelsOnCartesianGrid.cxx:329
int get_x_size() const
Definition VoxelsOnCartesianGrid.inl:55
VoxelsOnCartesianGrid(Array< 3, elemT > &&v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid, moving data from the Array<3,elemT> object.
Definition VoxelsOnCartesianGrid.cxx:146
VoxelsOnCartesianGrid()
Construct an empty VoxelsOnCartesianGrid (empty range, 0 origin, 0 grid_spacing)
Definition VoxelsOnCartesianGrid.cxx:132
VoxelsOnCartesianGrid< elemT > * clone() const override
Allocate a new DiscretisedDensity object which is a copy of the current one.
Definition VoxelsOnCartesianGrid.cxx:313
VoxelsOnCartesianGrid(const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object.
Definition VoxelsOnCartesianGrid.cxx:137
VoxelsOnCartesianGrid(const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid from an index range.
Definition VoxelsOnCartesianGrid.cxx:157
VoxelsOnCartesianGrid(const shared_ptr< const ExamInfo > &exam_info_sptr, Array< 3, elemT > &&v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid, moving data from the Array<3,elemT> object.
Definition VoxelsOnCartesianGrid.cxx:174
void set_plane(const PixelsOnCartesianGrid< elemT > &plane, const int z)
Set a single plane.
Definition VoxelsOnCartesianGrid.cxx:339
VoxelsOnCartesianGrid(const shared_ptr< const ExamInfo > &exam_info_sptr, const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object.
Definition VoxelsOnCartesianGrid.cxx:164
CartesianCoordinate3D< float > get_voxel_size() const
is the same as get_grid_spacing(), but now returns CartesianCoordinate3D for convenience
Definition VoxelsOnCartesianGrid.inl:27
void grow_z_range(const int min_z, const int max_z)
Growing of outer dimension only.
Definition VoxelsOnCartesianGrid.cxx:354
VoxelsOnCartesianGrid(const shared_ptr< const ExamInfo > &exam_info_sptr_v, const ProjDataInfo &proj_data_info, const CartesianCoordinate3D< float > &zooms, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
Constructor from exam_info and proj_data_info.
Definition VoxelsOnCartesianGrid.cxx:219
VoxelsOnCartesianGrid(const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing)
Construct a VoxelsOnCartesianGrid from an index range.
Definition VoxelsOnCartesianGrid.cxx:187
VoxelsOnCartesianGrid(const ProjDataInfo &proj_data_info_ptr, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
use ProjDataInfo to obtain the size information
Definition VoxelsOnCartesianGrid.cxx:196
VoxelsOnCartesianGrid(const shared_ptr< const ExamInfo > &exam_info_sptr, const ProjDataInfo &proj_data_info, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1))
Constructor from exam_info and proj_data_info.
Definition VoxelsOnCartesianGrid.cxx:208
VoxelsOnCartesianGrid< elemT > * get_empty_voxels_on_cartesian_grid() const
Alias of get_empty_copy (for backwards compatibility)
Definition VoxelsOnCartesianGrid.cxx:297
VoxelsOnCartesianGrid< elemT > * get_empty_copy() const override
Definition of the pure virtual defined in DiscretisedDensity.
Definition VoxelsOnCartesianGrid.cxx:306