我可能需要在.NET中可视化B-Spline(http://en.wikipedia.org/wiki/B-spline)。我不知道从哪里开始。有没有简单的方法或库可以做到这一点?我更喜欢在Silverlight中这样做,但WPF和Win Forms也没问题。我认为软件是一个带有一些控制点的坐标系,你可以添加,删除或移动,从而重新绘制样条。请注意,我缺乏数学背景。我在GDI +中发现了一些似乎用于绘制样条曲线的方法,但我不确定它们是否是B样条曲线。
任何建议都将不胜感激。欢迎提供图书馆,代码,指南链接或一般建议。
答案 0 :(得分:1)
B-Spline是问题的解决方案,也许您应该描述您的问题并询问最佳解决方案是什么。 GDI +包含用于绘制样条曲线的DrawBezier和DrawCurve,这可能是一个很好的起点。像这样:
Point p1 = new Point(10, 10);
Point p2 = new Point(50, 10);
Point p3 = new Point(10, 50);
Point p4 = new Point(50, 50);
e.Graphics.DrawBezier(Pens.Blue, p1, p2, p3, p4);
p2和p3不是曲线的一部分,而是“控制点”,移动它们以查看效果。
答案 1 :(得分:1)
前一段时间我为一些使用样条的科学代码编写了一个非常快速的程序。特别是,这些样条是NURBS(非均匀有理基准样条)。这是样条的最广义形式。所有其他样条线都是此类型的特殊情况。结向量用于生成样条,递归Cox de Boor算法用于计算点的值。 C#代码非常差,这是我快速拼凑出来解决问题的事情,之前我是一个更优秀的开发人员。如果你是谷歌考克斯德博尔,你会发现很多页面讨论样条的理论基础。要注意,他们中的大多数都有某种错误(其中一些错误在他们对结矢量的讨论中)
http://stochfit.svn.sourceforge.net/viewvc/stochfit/trunk/NURBs/
我不记得所有的数学细节,但如果我知道答案,我会尽力帮助。祝你好运,这对我来说是非常困难的知识!
编辑 - 如果您将给定点的权重设置为1,我相信您会从这些方法中获得B样条。