给定贝塞尔曲线上的几个样本点,是否可以计算出这些点可能位于的一组可能曲线?
在我的特定应用程序中,曲线可能具有一组有限的端点,因此我想生成一组可能的曲线,枚举所有曲线并挑选出所有可能以有效端点结束的曲线。
有些人要求提供更多细节。我有一组我知道在二次贝塞尔曲线上的点,我想计算曲线的公式并能够推断曲线上的新点。
贝塞尔曲线将始终通过起点和终点控制点。
如果曲线的度数等于样本点的数量,那么只有一条曲线将通过所有点(在正常情况下,所有点都不同,并且它们不位于贝塞尔曲线上程度较低)。
如果曲线的度数小于样本点的数量,那么在一般情况下,您将无法使曲线通过所有点(在正常情况下)。
如果曲线的度数高于样本点的数量,那么在一般情况下,您将能够绘制无限多的曲线。
在wiki 文章中,您只会找到对控制点的引用,但我仍然相信我正确地记住了上述属性,并且它们也适用于曲线上的点。
我认为您需要重新定义您的问题并准确定义您需要哪种类型的曲线(以及何种程度)。同样正如 Georg 指出的那样,您可能正在寻找路径 - 曲线的组合。
编辑:首先校正曲线定义为度数加上一个控制点(二次需要三个)。控制点与曲线上的点不同 - 对于曲线和二次曲线上的三个点,您可以有无限数量的解决方案(有关二次曲线和四个点,请参见this )
至于解决方案(但仍然假设您正在查看一条曲线):
对于单个二次曲线的方程,您有
B(t) = (1-t)^2*P0 + 2*(1-t)*t*P1 + t^2*P2
上面的大写字母是向量,P0对应起始控制点(第一个点),P2对应结束控制点(最后一个点),所以还是需要找到P1。变量 t 是范围从 0 到 1 的标量。
如果使用 2D 曲线,上述向量方程为曲线上的每个点提供两个标量方程。
仍然有 t 作为未知数,所以你应该再取 2 个点(总共 4 个),这会给你 4 个未知数(t 代表第一个点,t 代表第二个点,P1 的 x 和 y,中间控制点)和 4求解方程(每个样本点 2 个)。
用你最喜欢的数值方法解决这个问题,你会得到点来自的原始曲线。
如果您仍然认为可以获得更多曲线并且您必须选择一些东西,那么您不是在使用贝塞尔曲线,而是使用贝塞尔样条曲线(在多条曲线连接在一起的意义上)。仍然适用相同的原则,如果您从上述方程中找到解决单个曲线的方法(并且如果您有足够的点),那么您可以将问题划分为实际贝塞尔曲线的 n 段,并按上述方法求解。
如果事实证明您没有足够的积分,请再次查看链接的文章- 您可能正在寻找最平滑的曲线,并且文章中有一些关于如何到达那里的建议作为寻找确切的解决方案(最短曲线/smoothest 曲线)似乎相当复杂。