3

適度に滑らかな 2D の閉じたポリラインがあります。ただし、ポリラインを定義する頂点は等間隔ではありません。2 人が非常に接近することもあれば、4 人が非常に接近することもあります。

ポリラインを滑らかにしたいのですが、通常の平均化アルゴリズムでは領域が縮小する傾向があります。

for (int i = 0; i < (V.Length-1); i++)
{
   PointF prev = V[i-1]; //I have code that wraps the index around.
   PointF next = V[i+1];       
   PointF pt = V[i];

   float ave_x = one_third * (prev.X + next.X + pt.X);
   float ave_y = one_third * (prev.Y + next.Y + pt.Y);

   smooth_polyline[i] = new PointF(ave_x, ave_y);
}

ポリラインには数千のポイントが含まれており、隣接する 2 つのセグメント間の角度は通常 1 度未満です。

領域にあまり影響を与えずに頂点をより均等に配置する、これらの曲線を滑らかにするより良い方法はありますか?

4

4 に答える 4

2

Chaikin's Algorithmを探していると思います。このアイデアには、平滑化された曲線がコントロール ポイントを (「内側」ではなく) 直接通過するようにするバリエーションがありますが、現時点ではグーグルで検索するのに苦労しています。

于 2009-09-23T00:44:21.840 に答える
1

Douglas-Peucker アルゴリズムやこの論文http://www.cs.ait.ac.th/~guha/papers/simpliPoly.pdfなどの「曲線の単純化」の文献を見ることができます。

頂点が定義する隣接する線分がほぼ同一線上にある場合でも、等間隔の頂点が必要な場合、これはおそらくうまく機能しません。

于 2009-09-23T01:33:10.660 に答える
0

スプラインを使用して補間することもできます-ウィキペディアで検索してください

于 2009-09-23T00:48:49.423 に答える