1

.NET でB スプライン ( http://en.wikipedia.org/wiki/B-spline ) を視覚化する必要があるかもしれません。どこから始めればいいのかわからない。それを行う簡単な方法やライブラリはありますか? Silverlight で実行したいのですが、WPF と Win フォームでも問題ありません。ソフトウェアは、追加、削除、または移動してスプラインを再描画できるいくつかの制御点を持つ座標系であると想像しています。私には数学的背景が欠けていることに注意してください。スプラインを描画するためのものと思われる GDI+ のメソッドをいくつか見つけましたが、これらが B スプラインであるかどうかはわかりません。

アドバイスをいただければ幸いです。ライブラリ、コード、ガイドへのリンク、または一般的な提案を歓迎します。

4

2 に答える 2

1

Bスプラインは問題の解決策です。問題を説明し、最適な解決策を尋ねる必要があるかもしれません。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は曲線の一部ではなく、「コントロールポイント」です。これらを移動して、効果を確認してください。

于 2009-06-22T16:13:28.707 に答える
1

私はかなり前に、スプラインを利用した科学的コードのために非常に簡単なプログラムを書きました。特に、これらのスプラインは NURBS (非一様有理基底スプライン) です。これは、スプラインの最も一般化された形式です。他のすべてのスプラインは、このタイプの特殊なケースです。ノット ベクトルを使用してスプラインを生成し、再帰的な Cox de Boor アルゴリズムを使用して点の値を計算します。C# コードは非常に貧弱で、問題を解決するためにすぐにまとめたものであり、より洗練された開発者になる前でした。Cox de Boor をグーグルで検索すると、スプラインの理論的基盤について説明しているページが多数見つかります。注意してください、それらのほとんどには何らかのエラーがあります(ノットベクトルの議論にあるものもあります)

http://stochfit.svn.sourceforge.net/viewvc/stochfit/trunk/NURBs/

数学的な詳細をすべて覚えているわけではありませんが、答えがわかれば助けようとします。頑張ってください、これは私の側では取得するのが非常に難しい知識でした!

編集 - 特定のポイントの重みを 1 に設定すると、これらのメソッドから B スプラインが得られると思います。

于 2009-06-22T18:48:07.547 に答える