3

組み込みシステムで実行する制御アルゴリズムに取り組んでいます。私のプログラミング言語はCであり、システムはメモリと処理能力の点でかなり厳しく制限されます。

3次元空間にいくつか(約10のオーダー)の参照点があります。これらは通常静的ですが、時々変更されます。これらのすべての点を通過するようにスプラインサーフェスをフィットさせ、指定された入力ベクトル(x、z)に対して平面y=0からの距離yを返す関数を作成します。

これは2つの部分で解決する必要がある問題だと思います。1)参照点が変更されるたびにいくつかの新しい係数が計算されます。2)係数は、指定された(x、z)に対してyを返す関数にプラグインさます。(「リアルタイム」で発生する必要があるのは2つだけです。)

私はこれをネットで少し調べましたが、数学に苦労していて、多くの資料はコンピュータグラフィックスに固有のものです。必要なスプラインの種類すらわかりません。NURBSとCatmull-Romはどちらも関連性があるようです。最後に、スプラインのエッジの形状について:入力ベクトルは境界のあるセンサーの読み取り値からのものであるため、スプラインがその境界の外側で何をするかはあまり気にしません。

いくつかのヘルプや関連資料へのポインタに非常に感謝します。また、擬似コードのスニペットをいただければ幸いです。

4

1 に答える 1

1

基準点が変わるたびに何らかの方法でベジエ三角形を生成できれば、それらの三角形の滑らかな表面は、マイクロコントローラーの限られたリソースでも簡単に計算できます。必要なのは、足し算と 2 による割り算を繰り返すだけです。

すべての点を通過するベジエ三角形を生成する 1 つの方法は 、参照点でDelaunay 三角形分割を使用 して、表面を覆う三角形の束を見つけることです。次に、これらの三角形の角をベジエ三角形の角として使用し、隣接する三角形間のエッジが (「折り目」ではなく) 「滑らか」になるように任意のコントロール ポイントを選択します。

これらのコントロール ポイントを選択する 1 つの方法:

三角形の各頂点 (つまり、元の参照点) ごとに:

  • その頂点で一方が終わるすべての三角形の辺を見つける
  • そのコーナーポイントに「接続された」すべてのポイントを見つけます(それらのエッジの反対側)
  • そのコーナーポイントを通過する平面に適合し、最小平均二乗は接続されたポイントの「近く」になります
  • 各エッジについて、接続されたコーナー ポイントに向かって、指定されたコーナー ポイントから 1/4 (または 1/3 または 1/10 など) 離れたポイントを選びます。平面上でその点に最も近い点を見つけた後、その点を忘れます。結果のポイントを、そのエッジに隣接する 2 つの三角形のコントロール ポイントの 1 つとして使用します。

これにより、各ベジエ三角形の制御点が 1 つを除いてすべて得られます。ベジエ三角形の残りの中央制御点については、コーナー ポイントの幾何平均 (重心) を使用するのがおそらく最も簡単です。

于 2011-06-14T12:10:25.787 に答える