我正在尝试使用 HTML5 画布创建复杂路径的动画。我已经将我的路径划分为一些贝塞尔曲线,并使用三次贝塞尔曲线公式和 javascript 函数 lineTo() 绘制每一条曲线。问题是曲线相互连接的点。他们连接不顺畅。我意识到如果我使用 B 样条曲线而不是贝塞尔曲线,这个问题将得到解决。所以,我想知道是否有任何方法可以将贝塞尔曲线转换为 b 样条曲线?
问问题
2876 次
1 回答
5
理论上,可以将贝塞尔曲线视为单段 B 样条曲线。因此,实际上没有“将贝塞尔曲线转换为 B 样条曲线”之类的东西。如果可以根据维基百科页面中的信息实现三次贝塞尔曲线评估函数,那么根据De Boor算法实现B样条曲线应该不难。
如果您不想执行 B 样条曲线的额外长度,那么您可以做的是在本地修改 Bezier 曲线的控制点,使它们平滑地连接在一起。假设您有两条由 P0、P1、P2 和 P3 定义的三次贝塞尔曲线 C1(t) 和由 Q0、Q1、Q2 和 Q3 定义的 C2(t),P3=Q0。通过将 P2 和 Q1 投影到通过公共点 P3 的直线上,可以使 C1(t) 和 C2(t) 平滑连接。你如何选择线的方向取决于你。
于 2014-12-16T04:25:46.990 回答