123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #ifndef BOOST_MATH_INTERPOLATORS_BILINEAR_UNIFORM_HPP
- #define BOOST_MATH_INTERPOLATORS_BILINEAR_UNIFORM_HPP
- #include <utility>
- #include <memory>
- #include <boost/math/interpolators/detail/bilinear_uniform_detail.hpp>
- namespace boost::math::interpolators {
- template <class RandomAccessContainer>
- class bilinear_uniform
- {
- public:
- using Real = typename RandomAccessContainer::value_type;
- using Z = typename RandomAccessContainer::size_type;
- bilinear_uniform(RandomAccessContainer && fieldData, Z rows, Z cols, Real dx = 1, Real dy = 1, Real x0 = 0, Real y0 = 0)
- : m_imp(std::make_shared<detail::bilinear_uniform_imp<RandomAccessContainer>>(std::move(fieldData), rows, cols, dx, dy, x0, y0))
- {
- }
- Real operator()(Real x, Real y) const
- {
- return m_imp->operator()(x,y);
- }
- friend std::ostream& operator<<(std::ostream& out, bilinear_uniform<RandomAccessContainer> const & bu) {
- out << *bu.m_imp;
- return out;
- }
- private:
- std::shared_ptr<detail::bilinear_uniform_imp<RandomAccessContainer>> m_imp;
- };
- }
- #endif
|