我一直在寻找,但显然没有找到一种算法,该算法允许我插入已知沿曲线的 x,y 坐标列表,以便获得三次贝塞尔曲线吐口的 4 个控制点出去。
更准确地说,我正在寻找一种算法,它可以为我提供塑造曲线所需的两个控制点,同时输入一系列离散点,包括确定曲线起点和终点的两个控制点。
Thanks!
编辑:好的,由于数学,一个老对手,我需要询问最适合多项式函数的贝塞尔曲线。
所以我假设端点是固定的,然后你有许多 (x,y) 样本点,你想用三次贝塞尔曲线来拟合它们。
您拥有的样本点的数量将决定采取什么方法。我们来看几个案例:
2 points
2个样本点是最简单的情况。如果算上终点的话,总共可以得到 4 分。这是三次贝塞尔曲线中 CV 的数量。为了解决这个问题,您需要两个样本点的参数 (t) 值。然后,您有一个由 2 个方程和 2 个点组成的系统,您需要求解,其中方程是贝塞尔曲线在您选择的 t 值处的参数方程。
t 值可以是您喜欢的任何值,但通过使用 1/3 和 2/3,或者查看相对距离或沿基线的相对距离,您将获得更好的结果,具体取决于您的数据。
1 point
这与 2 点类似,只不过您没有足够的信息来唯一确定您的所有自由度。我建议是拟合二次贝塞尔曲线,然后进行度数提升。我写了一个二次拟合的详细例子这个问题 https://stackoverflow.com/questions/18476308/non-parametric-quadratic-bezier-curve-through-3-points-in-2d-in-r/18485522#18485522.
超过2分
在这种情况下,没有唯一的解决方案。我使用最小二乘近似得到了很好的结果。步骤是:
- 为每个样本选取 t 值
- 将方程组构建为矩阵
- 可选择添加整流罩或其他平滑功能
- 使用最小二乘求解器求解矩阵
这里有对这些步骤的很好的描述免费 cadd 教科书 http://tom.cs.byu.edu/~557/text/cagd.pdf,第 11 章。它讨论了拟合 B 样条曲线,但三次贝塞尔曲线是 B 样条曲线的一种(节点向量为 0,0,0,1,1,1,有 4 个点)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)