STIR 6.4.0
BSplinesRegularGrid.inl
Go to the documentation of this file.
1/*
2 Copyright (C) 2005 - 2009-10-08, Hammersmith Imanet Ltd
3 Copyright (C) 2013, University College London
4 This file is part of STIR.
5
6 SPDX-License-Identifier: Apache-2.0
7
8 See STIR/LICENSE.txt for details
9*/
18
20START_NAMESPACE_STIR
21
22namespace BSpline
23{
24
25template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
28
29template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
30void
31BSplinesRegularGrid<num_dimensions, out_elemT, in_elemT, constantsT>::set_private_values(
33{
34 this->_spline_types = this_type;
35 for (int i = 1; i <= num_dimensions; ++i)
36 detail::set_BSpline_values(this->_z1s[i], this->_z2s[i], this->_lambdas[i], this_type[i]);
37}
38
39template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
40void
41BSplinesRegularGrid<num_dimensions, out_elemT, in_elemT, constantsT>::set_private_values(const BSplineType& this_type)
42{
43 for (int i = 1; i <= num_dimensions; ++i)
44 {
45 this->_spline_types[i] = this_type;
46 detail::set_BSpline_values(this->_z1s[i], this->_z2s[i], this->_lambdas[i], this_type);
47 }
48}
49
50template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
51void
53{
54 this->_coeffs = Array<num_dimensions, out_elemT>(input.get_index_range());
55 detail::set_coef(this->_coeffs, input, this->_z1s, this->_z2s, this->_lambdas);
56}
57
58template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
59const out_elemT
61 const BasicCoordinate<num_dimensions, pos_type>& relative_positions) const
62{
63 return detail::compute_BSplines_value<num_dimensions, num_dimensions, in_elemT>()(
64 this->_coeffs, relative_positions, this->_spline_types);
65}
66
67template <int num_dimensions, typename out_elemT, typename in_elemT, typename constantsT>
70 const BasicCoordinate<num_dimensions, pos_type>& relative_positions) const
71{
72 return detail::compute_BSplines_gradient<num_dimensions, num_dimensions, in_elemT>()(
73 this->_coeffs, relative_positions, this->_spline_types);
74}
75
76} // end of namespace BSpline
77
78END_NAMESPACE_STIR
Implementation of the B-Splines Interpolation.
This class defines multi-dimensional (numeric) arrays.
Definition Array.h:78
const BasicCoordinate< num_dimensions, out_elemT > gradient(const BasicCoordinate< num_dimensions, pos_type > &relative_positions) const
Compute gradient of the interpolator.
Definition BSplinesRegularGrid.inl:69
~BSplinesRegularGrid()
destructor
Definition BSplinesRegularGrid.inl:26
const out_elemT operator()(const BasicCoordinate< num_dimensions, pos_type > &relative_positions) const
Compute value of the interpolator.
Definition BSplinesRegularGrid.inl:60
void set_coef(const Array< num_dimensions, in_elemT > &input)
Compute the coefficients for the B-splines from an array of samples.
Definition BSplinesRegularGrid.inl:52
class BasicCoordinate<int num_dimensions, typename coordT> defines num_dimensions -dimensional coordi...
Definition BasicCoordinate.h:57