C ++でのCatmull-Romスプライン補間アルゴリズムの実装



Implementation Catmull Rom Spline Interpolation Algorithm C



ナンセンスな話をせずに、私はコアアルゴリズムを次のように書きました CatMullRomSpline.h ヘッダーファイル、main.cppは呼び出し例です
アルゴリズム要件:入力ポイント> 4

CatMullRomSpline.h



#include #include #include #include #include #include #include #include using namespace std using namespace cv double tj(double ti, Point2d Pi, Point2d Pj){ double t = sqrt(sqrt( pow((Pj.x - Pi.x),2) + pow((Pj.y - Pi.y),2)) ) + ti return t } vector catMullRomSpline(vector inputPoints){ // How many points to insert between every two points int numSpace = 100 int numPoints = inputPoints.size() if (numPoints > 4){ int numSplines = numPoints - 3 std::vector result std::vector spline for (int i = 0 i

main.cpp

#include #include #include #include #include #include #include #include #include 'CatMullRomSpline.h' using namespace std using namespace cv int main(int argc,char*argv[]) { vector input input.push_back(Point2d(-510, -520)) input.push_back(Point2d(50,50)) input.push_back(Point2d(300,250)) input.push_back(Point2d(550,200)) input.push_back(Point2d(800,600)) input.push_back(Point2d(900,900)) // Call the algorithm vector Output = catMullRomSpline(input) cout<<' interpolated a total of '<