6

定義された一連の点 (数万点) からスプラインを作成するプロジェクトに取り組んでいます。

最初に最初の 1000 ポイントのスプラインを作成し、そのパスを矢印で「駆動」することをシミュレートします (接線とスプライン上の現在のポイントを使用して描画されます)。パスの終わりに近づいたら、次の 1000 ポイントを取得して新しいスプラインを作成し、「運転」を続けます。

私が抱えている問題は、スプライン (前のスプラインと現在のスプライン) が最後に一致しないという事実です。一致しないということは、それらが同じ接線を持たず (一次微分が一致しない)、前のスプラインの最後の点と新しいスプラインの最初の点の間に違いがあることを意味します (これは、私が使用していないためです補間スプラインだが滑らかなスプライン - 以下の注 1 を参照)。これにより、新しく作成されたスプラインに切り替えると、スプラインの最後で矢印が「ジャンプ」します。

1:補間スプラインは使用していません。滑らかなスプラインを使用しています。詳細については、こちらこちらを参照してください。これは、入力として与えられた点のセットが結果のスプライン上にない可能性があることを意味します (私の場合、それらはスプラインに非常に近いですが、通常はスプライン上にはありません)。

注2:スプラインの計算に使用されるデータには多くのノイズがあるため、補間スプラインを使用することは問題外です。

注 3 : ポイント セット全体のスプラインを計算するには、2 GB RAM を搭載した 3Ghz PC (アプリケーションのターゲット プラットフォーム) で長時間 (30 秒以上) かかります。したがって、これを行うことも問題外です。

スプラインを切り替えるときの不要な「ジャンプ」を克服したいと思います。

だから私の質問は:

  • 新しいスプラインへのスムーズな「ジャンプ」/移行を行うための方法/アルゴリズムはありますか?
  • これを克服するために、特別なタイプのスプラインで何かをすることはできますか? (これは私がこれまでに試したもので、かなりの改善はありません)。

アイデアをありがとう、

イウリアン

4

1 に答える 1

4

確かに、これはかなり洗練されていない提案ですが、明らかなハックの1つは、ポイントの個別のサブセットではなく、オーバーラップする領域にフィットし、オーバーラップする領域で結果のスプライン間を補間することです。

たとえば、ポイント1〜1000の平滑スプラインを生成します。1〜900でアニメートしているときに、901〜1900で次のスプラインを生成します。901〜1000の領域では、両方のスプラインの対応する位置の重み付けされた組み合わせを使用します。重み付けは、901で1:0、1000で0:1です。1801〜1900などでも同じです。

単純な線形補間で十分であり、マージンはおそらく巨大である必要はないと思いますが、経験的にそれを決定することができます。

于 2011-06-16T09:15:10.373 に答える