質問

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

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

役に立ちましたか?

解決

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

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

数学的詳細のすべてを思い出すわけではありませんが、答えがわかっていれば助けようとします。幸運なことに、これは私にとって非常に難しい知識でした!

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

他のヒント

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は曲線の一部ではなく「コントロールポイント」です。それらを動かして効果を確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top