問題タブ [bspline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ で n 個の制御点と次数 k を持つ B スプライン曲線
いくつかの 1D ポイントがあり、それを曲線に合わせたいと考えています。たまたま、B スプライン曲線を使用することをお勧めします。コード C++ を使用して、いくつかの n 個の制御点 (いくつかの 1D ポイント) と次数 (次数) k から B スプライン曲線を作成したいと考えています。C ++のサンプルコードまたはガイド/説明リンクを提案してもらえますか? 前もって感謝します。
ここに図を示します
nurbs - BSpline に次のものを含めることは合理的ですか?
次のパラメーターを持つ閉じた 3 次 (次数 2) BSpline があります。
9 つのコントロール ポイント 14 のノット ポイント
なぜ関係は 9 + 3 + 2 = 14 なのですか?
python - Python による B スプライン補間
Python で B スプラインの Mathematica の例を再現しようとしています。
Mathematica の例のコードは
そして私が期待するものを生み出します。今、私は Python/scipy で同じことをしようとしています:
これにより、補間も行われますが、見た目が正しくありません。Mathematica と同じノットを使用して、x 成分と y 成分を別々にパラメーター化し、スプライン化します。ただし、オーバーシュートとアンダーシュートが発生し、補間された曲線が制御点の凸包の外側で曲がってしまいます。これを行う正しい方法は何ですか/Mathematica はどのようにそれを行いますか?
c++ - B スプライン曲線
B スプライン曲線を使用して滑らかにしたい点のセットがあります。
私の質問は、これらの点のセットを滑らかにするために B スプライン曲線を実装するにはどうすればよいですか?
これをc++で実装したい。
scipy - scipy.interpolate.splrep が b スプラインの補間を正しく行わない
私は次のコードを使用しています:
しかし、bSpline には奇妙なノットがあり (一部は 0)、yInterp はすべて台無しです。
yInterp は、-28 や -29 ではなく、正の 0.30 付近の値を持つ必要があります。
c++ - 関数の引数の定義に応じて関数がクラッシュする - ダブルフリーまたは破損
bspline 基底関数を評価するためのクラスを定義しました。ポインターや新しい削除などを使用したことはありません。クラスは次のとおりです。
ユーザーに対して透過的で、関数 B_i(x) を評価する関数は次のとおりです。
可変整数 i を使用して for ループ内で使用すると、すべてがうまく機能します。つまり、この例では次のようになります。
正しい値が出力されます。ただし、次の例のように、関数の最初の引数に定数整数を定義すると、次のようになります。
次のエラーが表示されます。
gdb でコードを実行してバックトレースすると、次のメッセージが表示されます。
問題は機能にあるに違いない
と
ループの外で最初の引数を定義したときにエラーが発生する可能性があることを理解できません。どんな助けでも大歓迎です。
更新:インデックス (idx=3) が許容範囲外にあるためではないことを明確にしてください。この場合、最初の for ループがクラッシュします。変数 nbasis が 3 よりはるかに大きい。
更新 2: @Adrian の提案に従って、Bix_temp をクラスの要素にし、コードを再実行しました。再びコードがクラッシュしますが、何らかの出力 (x と infs の値) が生成されることがわかります。これは、デバッガーの新しい出力です。
繰り返しますが、for ループ インデックス i を使用すると、エラーは発生しません。
更新 3:バグを発見しました。これは概念的なものであり、関数内にありました
具体的には、次のコード行で:
ご協力ありがとうございました。
curve-fitting - 適合した 2 つの B スプライン曲線を接続するには?
B スプライン カーブ フィッティングを使用して、滑らかな曲線を 1 つ取得します。滑らかな B-spline を 2 つ取得した場合、どうすればスムーズに接続できますか。たとえば、59 個のポイント ((x0,y0,z0),...,(x58, y58, z58)) があり、2 つの適合 B スプラインがあります。1 つの B スプラインは最初の 30 ポイント用で、別の B スプラインは次の 30 ポイント用で、2 つのポイント セットは 1 つの共通点 ((x29,y29,z29)) を共有します。ポイント (x29,y29,z29) は、カーブ フィッティングにより 2 回変更され、2 つの新しい位置になります。2 つの新しい位置を単に接続すると、最終的な曲線は点 (x29、y29、z29) で滑らかになりません。現在、すべてのデータをまとめてカーブ フィッティングを実行していますが、これにより最初の 30 ポイントの滑らかなカーブが完全に変更されます。最初の滑らかな曲線の接続部分だけを変更したいと考えています。導関数をジョイントで等しくする必要があることはわかっています。私はそれを行う方法がわかりません。