STIR  6.2.0
Public Member Functions | Protected Member Functions | List of all members
stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT > Class Template Reference

This abstract class is the basis for images on a Cartesian grid. More...

#include "stir/DiscretisedDensityOnCartesianGrid.h"

Inheritance diagram for stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT >:
Inheritance graph
[legend]

Public Member Functions

 DiscretisedDensityOnCartesianGrid ()
 Construct an empty DiscretisedDensityOnCartesianGrid.
 
 DiscretisedDensityOnCartesianGrid (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing)
 Constructor given range, grid spacing and origin.
 
 DiscretisedDensityOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing)
 Constructor given exam_info, range, grid spacing and origin.
 
const BasicCoordinate< num_dimensions, float > & get_grid_spacing () const
 Return the grid_spacing.
 
void set_grid_spacing (const BasicCoordinate< num_dimensions, float > &grid_spacing_v)
 Set the grid_spacing.
 
- Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT >
 DiscretisedDensity ()
 Construct an empty DiscretisedDensity.
 
 DiscretisedDensity (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin)
 Construct DiscretisedDensity from a given range of indices & origin.
 
 DiscretisedDensity (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin)
 Construct DiscretisedDensity from ExamInfo and a given range of indices & origin.
 
const CartesianCoordinate3D< float > & get_origin () const
 Return the origin.
 
void set_origin (const CartesianCoordinate3D< float > &origin)
 Set the origin.
 
virtual DiscretisedDensity< num_dimensions, elemT > * get_empty_copy () const =0
 Allocate a new DiscretisedDensity object with same characteristics as the current one.
 
virtual DiscretisedDensity< num_dimensions, elemT > * clone () const =0
 Allocate a new DiscretisedDensity object which is a copy of the current one.
 
DiscretisedDensity< num_dimensions, elemT > * get_empty_discretised_density () const
 Allocate a new DiscretisedDensity object with same characteristics as the current one.
 
CartesianCoordinate3D< float > get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Return the coordinates of the centre of the basis-function corresponding to indices. More...
 
CartesianCoordinate3D< float > get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Return the coordinates of the centre of the basis-function corresponding to non-integer coordinate in 'physical' coordinates. More...
 
CartesianCoordinate3D< float > get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Return the relative coordinates of the centre of the basis-function corresponding to indices. More...
 
CartesianCoordinate3D< float > get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Return the relative coordinates of the centre of the basis-function corresponding to the non-integer coordinates in 'index' coordinates. More...
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_physical_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_relative_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the indices of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const
 Return the index-coordinates of the basis-function closest to the given point. More...
 
BasicCoordinate< num_dimensions, float > get_index_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to continuous indices.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &indices) const
 Translation from physical to LPS coordinates.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const
 Translation from indices to LPS coordinates.
 
CartesianCoordinate3D< float > get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const
 Translation from continuous indices to LPS coordinates.
 
CartesianCoordinate3D< float > get_physical_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to physical coordinates.
 
BasicCoordinate< num_dimensions, int > get_indices_closest_to_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const
 Translation from LPS coordinates to indices.
 
bool has_same_characteristics (self_type const &, std::string &explanation) const
 Checks if the 2 objects have the same type, index range, origin etc. More...
 
bool has_same_characteristics (self_type const &) const
 Checks if the 2 objects have the same type, index range, origin etc. More...
 
bool operator== (const self_type &) const
 check equality (data has to be identical) More...
 
bool operator!= (const self_type &) const
 negation of operator==
 
- Public Member Functions inherited from stir::ExamData
 ExamData ()
 ExamData. More...
 
 ExamData (const shared_ptr< const ExamInfo > &_this_exam)
 
virtual const ExamInfoget_exam_info () const
 
virtual shared_ptr< const ExamInfoget_exam_info_sptr () const
 Get shared pointer to exam info.
 
virtual void set_exam_info (ExamInfo const &)
 change exam info More...
 
void set_exam_info_sptr (shared_ptr< const ExamInfo > new_exam_info_sptr)
 
- Public Member Functions inherited from stir::Array< num_dimensions, elemT >
 Array ()
 Construct an empty Array.
 
 Array (const IndexRange< num_dimensions > &)
 Construct an Array of given range of indices, elements are initialised to 0.
 
 Array (const IndexRange< num_dimensions > &range, shared_ptr< elemT[]> data_sptr)
 Construct an Array pointing to existing contiguous data. More...
 
 Array (const base_type &t)
 Construct an Array from an object of its base_type.
 
 Array (const self &t)
 Copy constructor.
 
 ~Array () override
 virtual destructor, frees up any allocated memory
 
 Array (Array &&other) noexcept
 move constructor More...
 
Arrayoperator= (Array other)
 assignment operator More...
 
IndexRange< num_dimensions > get_index_range () const
 
size_t size_all () const
 return the total number of elements in this array
 
virtual void resize (const IndexRange< num_dimensions > &range)
 change the array to a new range of indices, new elements are set to 0 More...
 
virtual void grow (const IndexRange< num_dimensions > &range)
 alias for resize()
 
elemT sum () const
 return sum of all elements
 
elemT sum_positive () const
 return sum of all positive elements
 
elemT find_max () const
 return maximum of all the elements
 
elemT find_min () const
 return minimum of all the elements
 
void fill (const elemT &n)
 Fill elements with value n. More...
 
void apply_lower_threshold (const elemT &l)
 Sets elements below value to the value.
 
void apply_upper_threshold (const elemT &u)
 Sets elements above value to the value.
 
bool is_regular () const
 checks if the index range is 'regular' More...
 
bool get_regular_range (BasicCoordinate< num_dimensions, int > &min, BasicCoordinate< num_dimensions, int > &max) const
 find regular range, returns false if the range is not regular More...
 
Array< num_dimensions - 1, elemT > & operator[] (int i)
 allow array-style access, read/write
 
const Array< num_dimensions - 1, elemT > & operator[] (int i) const
 array access, read-only
 
elemT & operator[] (const BasicCoordinate< num_dimensions, int > &c)
 allow array-style access given a BasicCoordinate to specify the indices, read/write
 
const elemT & operator[] (const BasicCoordinate< num_dimensions, int > &c) const
 array access given a BasicCoordinate to specify the indices, read-only
 
template<typename elemT2 >
STIR_DEPRECATED void axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y)
 
void xapyb (const Array &x, const elemT a, const Array &y, const elemT b)
 set values of the array to x*a+y*b, where a and b are scalar
 
void xapyb (const Array &x, const Array &a, const Array &y, const Array &b)
 set values of the array to x*a+y*b, where a and b are arrays
 
template<class T >
void sapyb (const T &a, const Array &y, const T &b)
 set values of the array to self*a+y*b where a and b are scalar or arrays
 
template<int num_dimensions, typename elemT>
 Array (Array< num_dimensions, elemT > &&other) noexcept
 
template<typename elemT2 >
void axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y)
 
full_iterator begin_all ()
 start value for iterating through all elements in the array, see full_iterator
 
const_full_iterator begin_all () const
 start value for iterating through all elements in the (const) array, see full_iterator
 
const_full_iterator begin_all_const () const
 start value for iterating through all elements in the array, see full_iterator
 
full_iterator end_all ()
 end value for iterating through all elements in the array, see full_iterator
 
const_full_iterator end_all () const
 end value for iterating through all elements in the (const) array, see full_iterator
 
const_full_iterator end_all_const () const
 end value for iterating through all elements in the array, see full_iterator
 
Array< num_dimensions - 1, elemT > & at (int i)
 
const Array< num_dimensions - 1, elemT > & at (int i) const
 
elemT & at (const BasicCoordinate< num_dimensions, int > &c)
 
const elemT & at (const BasicCoordinate< num_dimensions, int > &c) const
 
bool is_contiguous () const
 return if the array is contiguous in memory
 
elemT * get_full_data_ptr ()
 member function for access to the data via a elemT* More...
 
const elemT * get_const_full_data_ptr () const
 member function for access to the data via a const elemT* More...
 
void release_full_data_ptr ()
 signal end of access to elemT* More...
 
void release_const_full_data_ptr () const
 signal end of access to const elemT* More...
 
- Public Member Functions inherited from stir::NumericVectorWithOffset< Array< num_dimensions - 1, elemT >, elemT >
 NumericVectorWithOffset (const VectorWithOffset< Array< num_dimensions - 1, elemT > > &t)
 Constructor from an object of this class' base_type.
 
 NumericVectorWithOffset (const NumericVectorWithOffset &t)
 Constructor from an object of this class' base_type.
 
 NumericVectorWithOffset (NumericVectorWithOffset &&other) noexcept
 move constructor More...
 
NumericVectorWithOffsetoperator= (const NumericVectorWithOffset &other)
 assignment
 
NumericVectorWithOffset operator+ (const NumericVectorWithOffset &v) const
 adding vectors, element by element
 
NumericVectorWithOffset operator+ (const elemT &v) const
 return a new vector with elements equal to the sum of the elements in the original and the elemT
 
NumericVectorWithOffset operator- (const NumericVectorWithOffset &v) const
 subtracting vectors, element by element
 
NumericVectorWithOffset operator- (const elemT &v) const
 return a new vector with elements equal to the difference of the elements in the original and the elemT
 
NumericVectorWithOffset operator* (const NumericVectorWithOffset &v) const
 multiplying vectors, element by element
 
NumericVectorWithOffset operator* (const elemT &v) const
 return a new vector with elements equal to the multiplication of the elements in the original and the elemT
 
NumericVectorWithOffset operator/ (const NumericVectorWithOffset &v) const
 dividing vectors, element by element
 
NumericVectorWithOffset operator/ (const elemT &v) const
 return a new vector with elements equal to the division of the elements in the original and the elemT
 
NumericVectorWithOffsetoperator+= (const NumericVectorWithOffset &v)
 adding elements of v to the current vector More...
 
NumericVectorWithOffsetoperator+= (const elemT &v)
 adding an elemT to the elements of the current vector
 
NumericVectorWithOffsetoperator-= (const NumericVectorWithOffset &v)
 subtracting elements of v from the current vector More...
 
NumericVectorWithOffsetoperator-= (const elemT &v)
 subtracting an elemT from the elements of the current vector
 
NumericVectorWithOffsetoperator*= (const NumericVectorWithOffset &v)
 multiplying elements of the current vector with elements of v More...
 
NumericVectorWithOffsetoperator*= (const elemT &v)
 multiplying the elements of the current vector with an elemT
 
NumericVectorWithOffsetoperator/= (const NumericVectorWithOffset &v)
 dividing all elements of the current vector by elements of v More...
 
NumericVectorWithOffsetoperator/= (const elemT &v)
 dividing the elements of the current vector by an elemT
 
STIR_DEPRECATED void axpby (const elemT2 a, const NumericVectorWithOffset &x, const elemT2 b, const NumericVectorWithOffset &y)
 
void axpby (const NUMBER2 a, const NumericVectorWithOffset &x, const NUMBER2 b, const NumericVectorWithOffset &y)
 
void xapyb (const NumericVectorWithOffset &x, const elemT a, const NumericVectorWithOffset &y, const elemT b)
 set values of the array to x*a+y*b, where a and b are scalar
 
void xapyb (const NumericVectorWithOffset &x, const NumericVectorWithOffset &a, const NumericVectorWithOffset &y, const NumericVectorWithOffset &b)
 set the values of the array to x*a+y*b, where a and b are vectors
 
void sapyb (const T2 &a, const NumericVectorWithOffset &y, const T2 &b)
 set the values of the array to self*a+y*b, where a and b are scalar or vectors
 
- Public Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
 VectorWithOffset ()
 Default constructor: creates a vector of length 0.
 
 VectorWithOffset (const int hsz)
 Construct a VectorWithOffset of given length (initialised with T())
 
 VectorWithOffset (const int min_index, const int max_index)
 Construct a VectorWithOffset with offset min_index (initialised with T())
 
STIR_DEPRECATED VectorWithOffset (const int hsz, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr)
 Construct a VectorWithOffset of given length pointing to existing data. More...
 
STIR_DEPRECATED VectorWithOffset (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr)
 Construct a VectorWithOffset with offset min_index pointing to existing data. More...
 
 VectorWithOffset (const int hsz, const Array< num_dimensions - 1, elemT > *const data_ptr)
 Construct a VectorWithOffset of given length from a bare pointer (copying data)
 
 VectorWithOffset (const int min_index, const int max_index, const Array< num_dimensions - 1, elemT > *const data_ptr)
 Construct a VectorWithOffset with offset min_index from a bare pointer (copying data)
 
 VectorWithOffset (const int min_index, const int max_index, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr)
 Construct a VectorWithOffset sharing existing data. More...
 
 VectorWithOffset (const int sz, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr)
 Construct a VectorWithOffset sharing existing data. More...
 
 VectorWithOffset (const VectorWithOffset &il)
 copy constructor
 
 VectorWithOffset (VectorWithOffset &&other) noexcept
 move constructor More...
 
virtual ~VectorWithOffset ()
 Destructor.
 
void recycle ()
 Free all memory and make object as if default-constructed. More...
 
VectorWithOffsetoperator= (const VectorWithOffset &il)
 assignment operator with another vector More...
 
Array< num_dimensions - 1, elemT > & operator[] (int i)
 allow array-style access, read/write More...
 
const Array< num_dimensions - 1, elemT > & operator[] (int i) const
 array access, read-only More...
 
Array< num_dimensions - 1, elemT > & at (int i)
 allow array-style access, read/write, but with range checking (throws std::out_of_range)
 
const Array< num_dimensions - 1, elemT > & at (int i) const
 array access, read-only, but with range checking (throws std::out_of_range)
 
bool empty () const
 checks if the vector is empty
 
void fill (const Array< num_dimensions - 1, elemT > &n)
 fill elements with value n
 
void apply_lower_threshold (const Array< num_dimensions - 1, elemT > &lower)
 Sets elements below value to the value.
 
void apply_upper_threshold (const Array< num_dimensions - 1, elemT > &upper)
 Sets elements above value to the value.
 
int get_length () const
 return number of elements in this vector More...
 
size_t size () const
 return number of elements in this vector
 
int get_min_index () const
 get value of first valid index
 
int get_max_index () const
 get value of last valid index
 
void set_offset (const int min_index)
 change value of starting index
 
void set_min_index (const int min_index)
 identical to set_offset()
 
virtual void grow (const int min_index, const int max_index)
 grow the range of the vector, new elements are set to T() More...
 
void grow (const unsigned int new_size)
 grow the range of the vector from 0 to new_size-1, new elements are set to T()
 
virtual void resize (const int min_index, const int max_index)
 change the range of the vector, new elements are set to T() More...
 
void resize (const unsigned int new_size)
 change the range of the vector from 0 to new_size-1, new elements are set to T()
 
void reserve (const int min_index, const int max_index)
 make the allocated range at least from min_index to max_index
 
void reserve (const unsigned int new_size)
 make the allocated range at least from 0 to new_size-1
 
size_t capacity () const
 get allocated size
 
bool owns_memory_for_data () const
 check if this object owns the memory for the data More...
 
int get_capacity_min_index () const
 get min_index within allocated range More...
 
int get_capacity_max_index () const
 get max_index within allocated range More...
 
bool operator== (const VectorWithOffset &iv) const
 
bool operator!= (const VectorWithOffset &iv) const
 
Array< num_dimensions - 1, elemT > * get_data_ptr ()
 member function for access to the data via a T* More...
 
const Array< num_dimensions - 1, elemT > * get_const_data_ptr () const
 member function for access to the data via a const T* More...
 
void release_data_ptr ()
 signal end of access to T* More...
 
void release_const_data_ptr () const
 signal end of access to const T* More...
 
iterator begin ()
 use to initialise an iterator to the first element of the vector
 
const_iterator begin () const
 use to initialise an iterator to the first element of the (const) vector
 
iterator end ()
 iterator 'past' the last element of the vector
 
const_iterator end () const
 iterator 'past' the last element of the (const) vector
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
VectorWithOffsetoperator+= (const VectorWithOffset &v)
 adding elements of v to the current vector
 
VectorWithOffsetoperator-= (const VectorWithOffset &v)
 subtracting elements of v from the current vector
 
VectorWithOffsetoperator*= (const VectorWithOffset &v)
 multiplying elements of the current vector with elements of v
 
VectorWithOffsetoperator/= (const VectorWithOffset &v)
 dividing all elements of the current vector by elements of v
 
VectorWithOffset operator+ (const VectorWithOffset &v) const
 adding vectors, element by element
 
VectorWithOffset operator- (const VectorWithOffset &v) const
 subtracting vectors, element by element
 
VectorWithOffset operator* (const VectorWithOffset &v) const
 multiplying vectors, element by element
 
VectorWithOffset operator/ (const VectorWithOffset &v) const
 dividing vectors, element by element
 

Protected Member Functions

bool actual_has_same_characteristics (DiscretisedDensity< num_dimensions, elemT > const &, std::string &explanation) const override
 Implementation used by has_same_characteristics. More...
 
CartesianCoordinate3D< float > actual_get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const override
 Return the relative coordinates of the centre of the basis-function corresponding to indices. More...
 
BasicCoordinate< num_dimensions, float > actual_get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const override
 Return the indices of the basis-function closest to the given point. More...
 
- Protected Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
void check_state () const
 Called internally to see if all variables are consistent. More...
 
void init (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, bool copy_data)
 change vector with new index range and point to data_ptr More...
 

Additional Inherited Members

- Public Types inherited from stir::DiscretisedDensity< num_dimensions, elemT >
typedef DiscretisedDensity< num_dimensions, elemT > hierarchy_base_type
 A typedef that can be used what the base of the hierarchy is. More...
 
- Public Types inherited from stir::Array< num_dimensions, elemT >
typedef base_type::value_type value_type
 typedefs such that we do not need to have typename wherever we use these types defined in the base class
 
typedef base_type::reference reference
 
typedef base_type::const_reference const_reference
 
typedef base_type::difference_type difference_type
 
typedef base_type::size_type size_type
 
typedef base_type::iterator iterator
 
typedef base_type::const_iterator const_iterator
 
typedef elemT full_value_type
 
typedef full_value_type * full_pointer
 
typedef const full_value_type * const_full_pointer
 
typedef full_value_type & full_reference
 
typedef const full_value_type & const_full_reference
 
typedef FullArrayIterator< typename base_type::iterator, typename Array< num_dimensions - 1, elemT >::full_iterator, elemT, full_reference, full_pointer > full_iterator
 This defines an iterator type that iterates through all elements.
 
typedef FullArrayIterator< typename base_type::const_iterator, typename Array< num_dimensions - 1, elemT >::const_full_iterator, elemT, const_full_reference, const_full_pointer > const_full_iterator
 As full_iterator, but for const objects.
 
- Public Types inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
typedef size_t size_type
 
typedef Array< num_dimensions - 1, elemT > value_type
 
typedef value_typereference
 
typedef const value_typeconst_reference
 
typedef ptrdiff_t difference_type
 
typedef Array< num_dimensions - 1, elemT > * iterator
 
typedef Array< num_dimensions - 1, elemT > const * const_iterator
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
- Static Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT >
static DiscretisedDensityread_from_file (const std::string &filename)
 A static member to read an image from file. More...
 
- Protected Attributes inherited from stir::ExamData
shared_ptr< const ExamInfoexam_info_sptr
 
- Protected Attributes inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >
Array< num_dimensions - 1, elemT > * num
 pointer to (*this)[0] (taking get_min_index() into account that is).
 

Detailed Description

template<int num_dimensions, typename elemT>
class stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT >

This abstract class is the basis for images on a Cartesian grid.

The only new information compared to DiscretisedDensity is the grid_spacing. This is currently a BasicCoordinate<num_dimensions,float> object. It really should be CartesianCoordinate<num_dimensions,float> object, but we don't have such a class (as we can't provide names for the coordinates in the n-dimensional case.)

Member Function Documentation

◆ actual_has_same_characteristics()

template<int num_dimensions, typename elemT>
bool stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT >::actual_has_same_characteristics ( DiscretisedDensity< num_dimensions, elemT > const &  other,
std::string &  explanation 
) const
inlineoverrideprotectedvirtual

Implementation used by has_same_characteristics.

Warning
Has to be overloaded by the derived classes to check for other parameters. Also, the overloaded function has to call the current one.
Developer's note

We need this function as C++ rules say that if you overload a function, you hide all functions of the same name.

Reimplemented from stir::DiscretisedDensity< num_dimensions, elemT >.

◆ actual_get_relative_coordinates_for_indices()

template<int num_dimensions, typename elemT >
CartesianCoordinate3D< float > stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT >::actual_get_relative_coordinates_for_indices ( const BasicCoordinate< num_dimensions, float > &  indices) const
inlineoverrideprotectedvirtual

Return the relative coordinates of the centre of the basis-function corresponding to indices.

The return value is relative to the origin.

See also
get_relative_coordinates_for_indices

If num_dimensions is not 3, then the indices are assumed to correspond to the lowest dimensions.

Todo:
cope with non-standard orientations

Implements stir::DiscretisedDensity< num_dimensions, elemT >.

◆ actual_get_index_coordinates_for_relative_coordinates()

template<int num_dimensions, typename elemT >
BasicCoordinate< num_dimensions, float > stir::DiscretisedDensityOnCartesianGrid< num_dimensions, elemT >::actual_get_index_coordinates_for_relative_coordinates ( const CartesianCoordinate3D< float > &  coords) const
inlineoverrideprotectedvirtual

Return the indices of the basis-function closest to the given point.

The input argument should be relative to the origin.

See also
get_index_coordinates_for_relative_coordinates

If num_dimensions is not 3, then the indices coordinates are assumed to correspond to the lowest dimensions.

Todo:
cope with non-standard orientations

Implements stir::DiscretisedDensity< num_dimensions, elemT >.


The documentation for this class was generated from the following files: