https://zhuanlan.zhihu.com/p/344934774
cv::Point2f recursive_bezier(const std::vector<cv::Point2f> &control_points, float t)
{
// TODO: Implement de Casteljau's algorithm
if(control_points.size() == 1) return control_points[0];
std::vector<cv::Point2f> a;
for(int i = 0;i+1 < control_points.size();i ++) {
auto p = control_points[i] + t * (control_points[i+1] - control_points[i]);
a.push_back(p);
}
return recursive_bezier(a, t);
}
B样条曲线
https://zhuanlan.zhihu.com/p/369753167
B样条曲线和贝塞尔不一样的地方是,贝塞尔是受所有的点控制的,一定是平滑的,而且一定经过起始点,但是B样条由k个点控制,并不一定是平滑的,并不一定经过起始点