23template <
class FunctionType,
class elemT,
class positionT>
33 warning(
"Output must be regular range!");
37 index_out[1] = min_out[1];
38 relative_positions[1] = index_out[1] * step[1] - offset[1];
41 for (; index_out[1] <= max_out[1] && relative_positions[1] <= max_relative_positions[1];
42 ++index_out[1], relative_positions[1] += step[1])
44 index_out[2] = min_out[2];
45 relative_positions[2] = index_out[2] * step[2] - offset[2];
46 for (; index_out[2] <= max_out[2] && relative_positions[2] <= max_relative_positions[2];
47 ++index_out[2], relative_positions[2] += step[2])
49 index_out[3] = min_out[3];
50 relative_positions[3] = index_out[3] * step[3] - offset[3];
51 for (; index_out[3] <= max_out[3] && relative_positions[3] <= max_relative_positions[3];
52 ++index_out[3], relative_positions[3] += step[3])
53 out[index_out] = func(relative_positions);
58template <
typename elemT,
typename FunctionType,
typename Lambda>
65 warning(
"Output must be regular range!");
68 for (index_out[1] = min_out[1]; index_out[1] <= max_out[1]; ++index_out[1])
70 for (index_out[2] = min_out[2]; index_out[2] <= max_out[2]; ++index_out[2])
72 for (index_out[3] = min_out[3]; index_out[3] <= max_out[3]; ++index_out[3])
74 auto index_in = index_converter(index_out);
75 out[index_out] = func(index_in);
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
This class defines ranges which can be 'irregular'.
Definition IndexRange.h:69
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
Definition IndexRange.cxx:29
void warning(const char *const s,...)
Print warning with format string a la printf.
Definition warning.cxx:41
void sample_function_on_regular_grid(Array< 3, elemT > &out, FunctionType func, const BasicCoordinate< 3, positionT > &offset, const BasicCoordinate< 3, positionT > &step)
Generic function to get the values of a 3D function on a regular grid.
Definition sampling_functions.inl:25
void sample_function_using_index_converter(Array< 3, elemT > &out, FunctionType func, Lambda &&index_converter)
Generic function to get the values of a 3D function on a grid.
Definition sampling_functions.inl:60
Declaration of stir::warning()