Program Listing for File GriddedInterpolant.hpp

Return to documentation for file (src/navtk/utils/GriddedInterpolant.hpp)

#pragma once

#include <navtk/tensors.hpp>

namespace navtk {
namespace utils {

class GriddedInterpolant {
private:
    struct Denominator {
        int idx;
        int p2;
        int m1;
    };

public:
    GriddedInterpolant(Vector x_vector, Vector y_vector, Matrix q_mat);

    double interpolate(double x, double y);

private:
    GriddedInterpolant::Denominator get_3_point_denominators(int idx, const Vector& vec) const;

    Matrix big_f(const Denominator& x, const Denominator& y);

private:
    Vector x_vec;
    Vector y_vec;
    Matrix q;
    std::size_t num_x_elem;
    std::size_t num_y_elem;
    double x_spacing;
    double y_spacing;
    double x_width;
    double y_width;
    double x_max;
    double x_min;
    double y_max;
    double y_min;

    const Matrix A = Matrix{{1, 0, 0, 0}, {0, 0, 1, 0}, {-3, 3, -2, -1}, {2, -2, 1, 1}};
};
}  // namespace utils
}  // namespace navtk