将多项式曲线转换为Bezier曲线控制点

时间:2015-11-22 19:27:49

标签: math 2d bezier

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

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

1 个答案:

答案 0 :(得分:0)

这是纯粹的数学问题(除非你去#3 )...我推测你需要4个控制点用于2D中的单立方Bezier曲线。

  1. 代数方法

    尝试将您的List<Company> vendors = descriptions.stream() .map(Description::getCompany) .distinct() .collect (Collectors.toList()); 多项式与Bezier多项式形式匹配,并提取系数/控制点。这并不总是可行,但最精确的是......在最后我看到#2 中的链接我的插值多项​​式与Bezier匹配,所以我得到了控制点之间的转换公式。

  2. <强>插值

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

  3. 可以使用曲线拟合

    使用approximation search或任何其他最小化曲线距离...通过拟合贝塞尔控制点但是x(t),y(t)参数来搜索哪个是慢而非精确而没有其他约束。

  4. 我确信这个问题还有很多(可能是混合的)方法。