問題タブ [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.

0 投票する
1 に答える
234 参照

r - bs-call でクランプ ノット ベクトルを指定する

クランプされた b スプラインを R の一連の制御点に適合させるつもりですがknots、bs でのパラメーターの使用法を理解するのに苦労しています。一連の制御点が与えられた場合:

パスに沿った距離に対して x と y を個別に当てはめます。

しかし、フィットを最初と最後の点に固定するために、開いた均一な結び目ベクトルを提供したい - 使用dfはこれをサポートしていません。

私が理解しているように、与えられた一連のポイントとスプラインの次数 3 に対して、(12-1)+3+2 = 16ノットが存在する必要があります (m=n+p+1 あたり、#knots=m+1 の場合、#control=n+1、 degree=p)、クランプされたスプラインの場合、これは適切なノット ベクトルになるはずです。

ただし、これを使用すると、ランク不足に関する警告だけでなく、いくつかのクレイジーな数値が表示されるため、明らかに何らかの形で間違っている必要があります。

一連の制御点と次数を指定して、ノット ベクトルを指定する正しい方法は何ですか?

0 投票する
0 に答える
337 参照

r - 制御パスに基づいて予測ではなく描画するための b スプライン

SOに関する 2 つの個別の質問を通じて、一般的な問題にアプローチしようとしまし。これらへの回答は、私が今投稿しているより大きな問題の再定式化に私を導きました.

私が達成しようとしているのは、(Rで)一連の(単調ではない)制御点が与えられた場合、制御点によって与えられたパスに沿ってbスプラインを描く方法です。B-スプラインは両端で固定する必要があります。これは純粋にグラフィカルな目的のためです。

注: コントロール ポイントに基づいて値を予測しようとしているわけではありません。と の組み合わせを使用すると、predictB スプラインを制御パスに合わせる」で提案されているように、制御点 (点ではない) を通過しようとする ab スプラインが生成されます。特にスプラインがクランプされるように設定または設定されている場合、このアプローチ過剰適合につながり、スプラインはすべての制御点を通過します。lmbsdfknots

最終的に、このアプローチは数百または数千の個別のコントロール ポイント セットに適用されるため、アルゴリズムの効率が重要な要素になりますが、現在はそれを実現する方法を探しているところです。

おもちゃのデータ(リンクされた質問と同じ):

これはすべて、R で階層エッジ バンドルを計算するためのものです。

編集:

さて、内部で使用されている基本的な b-spline 実装にアクセスできないようです (または、十分に努力しなかった可能性があります)。とにかく、Jason Yu-Tseh Chiの de Boor アルゴリズムに触発された独自の Rcpp ベースの実装を作成することになりました。これの利点は、複数のパスを一度に構築できるようにベクトル化できることでした。これは、今後の CRAN パッケージ (hierarchicalSets) の一部になりますが、当面の間、興味を示している方と喜んで共有します (ここに投稿するには長すぎます)...

アップデート:

これに興味のある方は、スプライン描画がggforce拡張パッケージの ggplot2 の geom/stat 拡張として実装されます。

0 投票する
0 に答える
1753 参照

r - R での B スプラインのプロット

40 個の内部ノットを持つ 106 個のデータ セットに対して次数 4 の B スプライン基底を作成しようとしています。私がこれまでに見たすべてのプロットされた基底関数は、非常に滑らかできれいに広がった曲線で構成されています. これは、ノットと比較してデータ ポイントの比率が非常に低いという特性ですか、それとも何かひどく間違ったことをしているのですか?

また、プロパティの場合、スプラインの基底を作成する前に、さらにデータを生成する必要がありますか?

よりスパイキーな基底関数

0 投票する
0 に答える
176 参照

c# - MathDotNet を使用した BSpline 近似

MathDotNet には、b-スプラインを使用したデータ近似に関する機能がありますか? 残念ながら、ドキュメントには何も見つかりませんでした。

0 投票する
2 に答える
7255 参照

python - numpy/scipy を使用した高速 b スプライン アルゴリズム

Python で bspline 曲線を計算する必要があります。scipy.interpolate.splprep と他のいくつかの scipy モジュールを調べましたが、必要なものをすぐに提供してくれるものは見つかりませんでした。そこで、以下に独自のモジュールを作成しました。コードは正常に動作しますが、遅いです (テスト関数は 0.03 秒で実行されます。これは、6 つのコントロール頂点で 100 サンプルしか要求していないことを考えると、かなりの時間のように思えます)。

いくつかの scipy モジュール呼び出しを使用して以下のコードを単純化する方法はありますか? そうでない場合、パフォーマンスを向上させるためにコードに何ができるでしょうか?

以下の 2 つの画像は、私のコードが両方の閉じた条件で返すものを示しています。 開いた曲線 閉曲線

0 投票する
1 に答える
285 参照

math - 定義済みの値を超える曲率を持つ NURBS カーブのセクションを見つける

NURBS 曲線の鋭い角を見つけようとしています。この問題に対して、限界曲率を定義します。この値よりも高い曲率を持つ曲線上のセクションを見つけようとしています。1 つのオプションは、曲線を補間してすべての値の曲率を計算することですが、時間がかかる場合があり、いくつかの鋭い点が見逃される可能性があります。これらのセクションを効果的に見つける方法についてのアイデアはありますか?

0 投票する
1 に答える
712 参照

python - 重みが指定された曲線に適合しないscipy splrep()

scipy のsplrepを使用すると、テスト用の正弦波を簡単に合わせることができます。

スプライン正弦波プロット

splrepのドキュメントには、重みパラメータのデフォルト値は であると記載されていますnp.ones(len(x))。ただし、これをプロットすると、まったく異なるプロットになります。

splev と重みでプロット

ドキュメントには、重み配列が指定されている場合は平滑化条件sが異なると記載されていますが、設定s=len(x_spl) - np.sqrt(2*len(x_spl))(重み配列なしのデフォルト値) の場合でも、プロットに示されているように、結果は元の曲線に厳密には対応していません。

重み配列を使用した補間 (上記のように) が重みなしの補間と同じ結果を出力するようにするには、上記のコードで何を変更する必要がありますか? これを scipy 0.17.0 でテストしました。テスト IPython ノートブックの要旨