7

だから私は 3 次スプラインの特別なケースのセットを持っています。その 2 次元制御点は常にx軸で決して交差しない曲線になります。つまり、曲線はy = f ( x ) のような単純な多項式関数のように見えます。スプライン セグメントの長さを実行する等間隔の x 座標に対応する、スプラインに沿った y座標の配列を効率的に作成したいと考えています。

たとえば、x = 0.0、x = 0.1、x = 0.2 などのスプラインに沿って y 座標を効率的に見つけたい、または別の方法でアプローチして、f x,y ( t ) スタイル関数をf ( x ) 関数。

現在、4x4 定数行列と 4 つの 2D コントロール ポイントを使用してスプラインを記述し、エルミートまたは Catmull-Rom スプラインの行列定数を使用して、それらを0 から 1 までのtの 3 次関数にプラグインしています。

マトリックスと制御点が与えられた場合、x 軸上のこれらの y 値を取得する最良の方法は何ですか?

編集:描画するのに十分な近似で十分であることを追加する必要があります。

4

3 に答える 3

3

多くの場合、数値近似が十分であれば、根を求める手法 (ニュートン法など) を使用します。

于 2012-07-17T21:25:37.600 に答える
2

さて、あなたはあなたのf xt)= xtについて解くことができます。それは三次方程式になります。醜いですが、明示的に解決することは可能です。スプラインが説明どおりである場合、2つの解は共役複素数になるため、残りの1つだけが使用されます。これを使用して、 y = f yt )を計算します。正確な解決策が必要な場合は、もっと簡単に何でも達成できるとは思えません。

ウィキペディアの一般式を使用して、3次方程式の解を計算できます。

于 2012-07-17T08:21:37.360 に答える
2

あなたの質問は、等間隔のx座標が必要であり、おおよその解は問題ないと述べています。そこで、次のアルゴリズムを提案します。

  • 必要なグリッド ポイントを決定します。たとえば、0.1 x単位ごとに 1 つです。
  • l = 0 およびr = 1 から始めます。
  • f x ( l ) とf x ( r ) を計算し、これらの端点によって示される間隔を考慮します。
    • 間隔が十分に小さく、グリッド ポイントが 1 つだけ含まれている場合は、中心パラメーターt =( l + r )/2 をこのグリッド ポイントの適切な近似値として使用し、それを 1 要素リストとして返します。
    • その間隔に少なくとも 1 つの格子点がある場合、分割点として ( l + r )/2 を使用して 2 つに分割し、両方の計算から得られたリストを連結します。
    • 間隔内に格子点がない場合は、計算の現在の分岐をスキップして、空のリストを返します。

これにより、グリッド ポイントが拡大され、各ステップでパラメーター空間が二等分され、すべてのグリッド ポイントに適したパラメーターが表示されます。

于 2012-07-19T08:37:56.233 に答える