2017-01-31 12 views
1

現在、数値スプリング物理を使用しているソフトボディシステムで作業しています。私の問題は、すべてが現在直線であることです。任意の数のコントロールポイントのBスプライン

私は、ゲーム「フロアはゼリー」に類似したものを複製することを目指しており、現在はまっすぐで角張った滑らかなコーナーと変形を除いてすべてが機能します。

私はキュービックベジエ方程式を使用しようとしましたが、それはちょうど3つのノードごとに新しいカーブがあることを意味します。 vez2のループで動作するn個のコントロールポイントを取るベジェスプラインの式があります(node [0]は最初と最後のコントロールポイントです)。

申し訳ありません申し訳ありませんが、私はこれを表示するコードはありませんが、私は完全に困惑しており、グーグルでは何も起こっていません。

+0

[固有](https://eigen.tuxfamily.org/dox/unsupported/group__Splines__Module.html)スプラインライブラリを有しています。私は一度それを使用し、正式にサポートされていないにもかかわらずOKでした。しかし、私は閉曲線をサポートしているとは思わない。 – Potatoswatter

+0

は、Bスプラインを実装することは実際にはすべて*多大な作業ではないため、http://pomax.github.io/bezierinfo/#bsplinesに読み込みを行う価値があります。また、https://github.com/thibauts/b-spline/blob/master/index.jsは、C++を含む幅広い数の言語に(ほとんど)慣れ親しんでいる非常に読みやすいJS実装です –

答えて

0

Googleの「Bスプラインライブラリ」は、多くの参考文献を提供します。 Bスプラインはあなたの唯一の選択肢ではありません。キュービックエルミートスプライン(これは一連の点と微分によって定義されます)を使用することもできます(詳細はlinkを参照)。

一方、システムで直線を引き続き使用し、表示目的のために直線の頂点を補間するカーブを作成することもできます。一連のデータポイントから補間カーブを作成するには、Catmull-Romスプラインが簡単に実装できます。このアプローチは、実際にシステムでBスプライン曲線を使用するよりも優れたパフォーマンスを発揮します。

+0

Catmull-Romスプライン完璧で速かった!等式にほとんど変更を加えずに閉じた曲線で作業しました! –

0

私は最小限の制御点で滑らかな曲線を表現できるため、この問題にはBスプラインを使用します。さらに、与えられたデータセットの近似平滑面を見つけることは、単純な線形代数問題です。 はhttps://github.com/feevos/bsplines

それは制御点/多重の任意の数を受け入れ、あなたを与えることができます。

私はここに、科学技術計算のために使用していますライブラリは(同様ベジェ曲線を含んでいる)++シンプルなBスプラインCを書かれています基礎を戻す。しかし、あなたのデータに合ったB-スプライン曲線を作成することは、あなたがしなければならないことです。

GNU GSL( https://www.gnu.org/software/gsl/manual/html_node/Basis-Splines.html)にもBスプラインの大きな実装(ベジェ曲線なし)が存在します。ここでも、与えられた基準で2/3Dになるようにコントロールポイントを実装し、データに合わせて境界条件を修正する必要があります。ここで開/閉曲線やBスプラインに

詳細情報:

https://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/index.html