13

少し背景。1D 軌跡に 3 次スプラインを使用するシミュレーションがあります。このコンテキストでは、3 次スプラインはオブジェクトの位置、速度、加速度、ジャークを時間の関数として指定します。

あなたが持っている場合:

  • 位置、速度、加速度、時間の初期値と最終値
  • 最大および最小速度、加速度、ジャークに対する定数値の制約

次に、一意のスプラインがあります。最終時間を指定せず、代わりに最小時間の軌跡が必要な場合は、一意のスプラインもあります。

ただし、実際にこれらのスプラインを見つけることは、王室の苦痛になる可能性があります。時間が指定されている場合、スプラインは最大 7 つの多項式で構成され、ノット (多項式間の遷移点) は前もってわかりません。

これは、スプラインを一連のデータに適合させる通常のケースではなく、境界条件といくつかの追加の制約からスプラインを作成しています。人々が同様の配置を使用し、同様のニーズを持っている論文を読んだことがありますが、この種のスプラインの生成に取り組むライブラリ (またはソース コードでさえ) を見つけたことはありません。ほとんどのケースを処理するコードをいくつか書きましたが、それほど堅牢でも高速でもありません。私はそれが速いことをあまり心配していませんが、より堅牢であることは素晴らしいことです.

これを実行できるライブラリはありますか? ライブラリとしてビルドされていなくても、ソース コードをオープンしますか? C、C++、Java、または Python が推奨されますが、オープン ソースの場合は、他の言語も参照として役立ちます。

4

3 に答える 3

1

C++ 用のブースト ライブラリがあり、これはオープン ソースであり、途中まで到達する可能性があります。

必要なすべての基本的な構成要素 (Legrendre/Laguerre/Hermite 多項式、ルート検索など) が含まれていますが、実際にスプラインを計算することはできません。

ライブラリのドキュメントはこちらにありますので、ご自身で確認してください: http://www.boost.org/doc/libs/1_45_0/libs/math/doc/html/index.html

于 2011-01-26T18:33:17.870 に答える
1

スプラインの問題は、条件を解くために連立一次方程式を解かなければならないことです。これらの導関数の一部についてさらに詳しい情報がある場合は、Piecewise Cubic Hermite Interpolation (PCHIP) を使用できる可能性があります。

たとえば、ジャークがゼロでなければならないと定義する代わりに、別の制約を考え出し、PCHIP を使用して、貪欲に問題を解決することができます。とにかく、今回は使えなくても覚えておくべきものです。

http://www.mathworks.com/moler/interp.pdf

于 2011-04-04T21:08:39.790 に答える
0

SciPyの補間関数が役立つかもしれません...さらに、これらのスプラインの導関数または積分を簡単に取得できます...「補間ではない」と言う理由がわかりません...それがあなたがしようとしていることのように思えます達成。

于 2011-02-02T15:29:36.860 に答える