二次样条差值算法
//注明:a为存储每段二次曲线的系数的二维矩阵
//二次样条差值 void fit_second(Point *p, int n, double y0d, vector<vector<double> > &a) { vector <double> va; for (int i=0; i<n-1; i++) { double x0 = p[i].x; double y0 = p[i].y; double x1 = p[i+1].x; double y1 = p[i+1].y; double h0 = x1 - x0; //S(x) = (y1-y0-h0*y0')*(x-x0)^2/(h0^2) + y0'*(x-x0) + y0 double a2 = (y1-y0-h0*y0d)/(h0*h0); double a1 = (-2*x0)*(y1-y0-h0*y0d)/(h0*h0) + y0d; double a0 = (x0*x0)*(y1-y0-h0*y0d)/(h0*h0) - y0d*x0 + y0; y0d = 2*(y1-y0)/h0 - y0d; va.clear(); va.push_back(a0); va.push_back(a1); va.push_back(a2); a.push_back(va); } }
作者:涵曦(www.hanxi.cc)
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
《 Skynet 游戏服务器开发实战》
-
学习地址:
-
优惠推荐码:
2CZ2UA5u
-
可以先免费试学前 2 章内容