#pragma once #include #include "i_bspline.hpp" namespace cvpr { class BSpline : public IBSpline { public: BSpline(); BSpline(const std::vector>& points, int degree); void create(const std::vector>& points, int degree) override; bool isValid() override; std::vector eval(double t) override; private: void createImpl(const std::vector>& points, int degree); private: bool m_isValid; std::pair m_domain; std::vector m_knots; std::vector m_weights; std::vector> m_v; int m_dim; int m_degree; }; }