我尝试使用HTML5画布创建复杂路径的动画。我已经将我的路径划分为一些bezier曲线,并使用cubic bezier curves formula和javascript函数lineTo()绘制每个曲线。问题是曲线相互连接的点。他们没有顺利连接。我已经意识到如果我使用B样条曲线而不是贝塞尔曲线,这个问题就会得到解决。所以,我想知道是否有任何方法可以将贝塞尔曲线转换为b样条曲线?
答案 0 :(得分:2)
理论上,贝塞尔曲线可以被认为是单段B样条曲线。因此,实际上没有“将贝塞尔曲线转换为B样条曲线”这样的事情。如果您可以根据维基百科页面中的信息实现三次贝塞尔曲线评估函数,那么根据De Boor algorithm实现B样条曲线并不困难。
如果您不想使用实施B样条曲线的额外长度,那么您可以做的是在本地修改Bezier曲线的控制点,使它们平滑地连接在一起。假设你有两个由P0,P1,P2和P3定义的三次贝塞尔曲线C1(t)和由Q0,Q1,Q2和Q3定义的P3 = Q0的C2(t)。通过在通过公共点P3的直线上投影P2和Q1,可以使C1(t)和C2(t)平滑地连接。你如何选择线的方向取决于你。