将多项式曲线转换为贝塞尔曲线控制点

Convert polynomial curve to Bezier Curve control points

给定幂形式的曲线,如何计算控制点?假设我有 p(t)=(x(t),y(t)) 和 4 个控制点。

x(t) = 2t 
y(t) = (t^3)+3(t^2)

这是纯数学题(除非你选择 #3)...我推断你需要 4 个控制点来绘制二维的单个三次贝塞尔曲线。

  1. 代数方法

    尝试将您的 x(t),y(t) 多项式与贝塞尔多项式形式匹配并提取 coefficients/control 点。这并不总是可行,但最精确...请参阅最后 #2 中的 link 我这样做是为了让我的插值多项​​式与贝塞尔曲线匹配,所以我得到了转换控制点之间的公式。

  2. 插值

    如果 none 或没有找到足够的极值,请在曲线上找到极值点(以尽可能保持精度),其余部分使用沿曲线均匀分散的点。曲线上需要 4 个控制点。现在只需将这 4 个点转换为曲线,例如:how to convert interpolation cubic polynmial to cubic Bezier

  3. 可以用曲线拟合

    使用approximation search或任何其他曲线距离的最小化...通过拟合贝塞尔曲线控制点,但这是8参数来搜索哪个是缓慢且不精确的,没有额外的约束..

我相信有很多(可能是混合的)方法可以解决这个问题。

您始终可以从幂基转换为伯恩斯坦基。这总是可行的,并且会给你精确的结果。有关详细信息,请参阅此 link (http://cagd.cs.byu.edu/~557/text/ch3.pdf) 的第 3.3 节。

编辑: 由于上面的link不再可用,我列出下面的公式:

其中 M 是 Berstein 基的阶数,0 <= k <= M 并且 b_i,k=0 如果 i < k。

以常见的三次 Berstein 基(其中 M=3)为例,我们将有