贝塞尔曲线将始终通过起点和终点控制点.
如果曲线的程度等于采样点的数量,则只有一条曲线将通过所有点(在正常情况下,所有点都不同,并且它们不在bezier曲线上程度较低).
如果曲线的度数小于采样点的数量那么,在一般情况下,您将无法使曲线通过所有点(在正常情况下).
如果曲线的程度高于采样点的数量,那么在一般情况下,您将能够绘制无限数量的曲线.
在wiki文章中,您将只找到对控制点的引用,但我仍然认为我正确地记住了上述属性,并且它们也适用于曲线上的点.
我认为你需要重新定义你的问题并准确定义你需要什么类型的曲线(以及程度).同样,乔治指出你可能正在寻找路径 - 曲线的组合.
编辑:首先修正 - 曲线定义为度数加一个控制点数(二次需要三个).控制点是不一样的曲线上的点-对于曲线和二次曲线上的三个点,你可以有解决方案的无穷数(请参阅本二次曲线个)
至于解决方案(但仍假设您正在查看单个曲线):
对于单二次曲线的方程式,您有
B(t) = (1-t)^2*P0 + 2*(1-t)*t*P1 + t^2*P2
Run Code Online (Sandbox Code Playgroud)
上面的大写字母是向量,P0对应于起始控制点(第一点),P2对应于结束控制点(最后一点),因此您仍然需要找到P1.变量t是标量,范围从0到1.
如果使用2D曲线,上面的矢量方程为曲线上的每个点提供两个标量方程.
仍然有t作为未知,所以你应该再拿2个点(总共4个),这将给你4个未知数(第一个点为t,第二个点为t,P1为中间控制点为x和y)和4个求解方程(每个样本点2个).
用你最喜欢的数值方法解决这个问题,你将得到点来自的原始曲线.
如果您仍然认为可以获得更多曲线并且您将不得不选择某些东西,那么您不会使用贝塞尔曲线,而是使用贝塞尔曲线(在多条曲线连接在一起的意义上).仍然采用相同的原则,如果你找到一种方法从上面的方程式解决单个曲线(如果你有足够的点),那么你可以将问题分成实际贝塞尔曲线的n段,并如上所述解决每个.
如果事实证明你没有足够的分数,那么再看一下链接的文章 - 你可能正在寻找最平滑的曲线,文章中有一些关于如何找到确切解决方案的建议(最短的曲线) /最平滑的曲线)似乎相当复杂.