将B样条曲线转换为贝塞尔曲线

4
我有一个B样条曲线,已经有了所有的节点和控制点的x、y坐标。
我需要将B样条曲线转换为贝塞尔曲线。
我的最终目标是在html5画布元素上绘制形状。B样条来自不支持贝塞尔曲线的dxf文件,而画布仅支持贝塞尔曲线。
我找到了几篇文章试图解释这个过程,但它们都超出了我的理解范围,似乎非常理论密集。我真的需要一个例子或一步一步的帮助。
这是我找到的: (解释B样条),(转换为贝塞尔曲线),(Javascript示例) 最后一个链接很好,因为它包含实际的代码,但是似乎没有考虑到节点分配的权重。我认为这很重要,因为它似乎会影响曲线是否通过控制点。
如果有人能指导我一步步的过程或帮助我写一些伪代码(或真实的代码),我将不胜感激。如果需要,我可以分享我的节点或控制点。

如果您能发布有关控制点的一些信息,那将会很有帮助。例如,您的点是[x,y],[x,y,w],[xw,yw,zw,w]还是其他什么?只需发布定义样条曲线所需的所有内容的小例子即可,这将非常有帮助。 - tfinniga
2个回答

0

这可能会有所帮助 - https://github.com/Tagussan/BSpline

我的项目已经进展了,我不再需要它,但这似乎是一种相当有用的方法来提供控制点并绘制曲线。


另外,还可以查看 cardinal splines 以获得绘制平滑曲线的简单方法。 - user1693593
@TimSum 参考的 GitHub 项目似乎使用光栅技术来渲染样条曲线。我怀疑它没有转换为贝塞尔曲线。我仍在寻找解决方案,也希望能找到适合我的方法。 - Igor Kondrasovas

0

我之前写了一个简单的Javascript实现Boehm算法用于三次B样条。这是一个相当直接的实现,涉及到极坐标值,在这里的第6.3节中有描述:计算机辅助几何设计- Sederberg

如果你只对实现感兴趣,我在这里链接了我编写的类:bsplines.js


11
您的bsplines.js链接已经失效,是否有重新启用的可能性?请您重新开启它。 - pancake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接