Program Listing for File InterpolationModel.hpp

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

#pragma once

#include <memory>
#include <typeinfo>

#include <navtk/tensors.hpp>
#include <navtk/utils/Ordered.hpp>

namespace navtk {
namespace utils {

class InterpolationModel {
public:
    virtual ~InterpolationModel() = default;

    InterpolationModel() = delete;

    InterpolationModel(const InterpolationModel &) = delete;

    InterpolationModel &operator=(const InterpolationModel &) = delete;

    InterpolationModel(InterpolationModel &&) = delete;

    InterpolationModel &operator=(InterpolationModel &&) = delete;

    virtual double y_at(double x_interp) = 0;

protected:
    InterpolationModel(const std::vector<double> &x, const std::vector<double> &y) : x(x), y(y){};

    std::vector<double> x;

    std::vector<double> y;

    NearestNeighbors<std::vector<double>::const_iterator, std::less<double>> nn;
};

}  // namespace utils
}  // namespace navtk