最小変形滑らかなポリライン
質問
私は合理的に滑らかで、2D閉じたポリラインを、持っています。しかし、ポリラインを定義する頂点が等間隔に配置されていません。時には2は一緒に非常に近くなるなど、多くの4として、時には、非常に近くなります。
Iはポリラインを平滑化したいが、定期的な平均化アルゴリズムは、面積を縮小する傾向にある
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度未満である。
これらの曲線を滑らかにする良い方法、スペースは、より均等に頂点ますあまりにも多くの地域に影響を与えることなく、何かがありますか?
解決
あなたは、このようなダグラスPeuckerアルゴリズムまたは本論文<のhref = "http://www.cs.ait.ac.th/~guha/papers/simpliPoly.pdfとして「カーブsimplication」文学に見ることができます"REL =" nofollowをnoreferrer "> http://www.cs.ait.ac.th/~guha/papers/simpliPoly.pdf を。
あなたは、彼らが定義し、隣接する線分がほぼ同一直線上にある場合でも、等間隔の頂点を必要とする場合、これはおそらく、うまく動作しません。
他のヒント
また、補間するスプラインを使用することができます - ちょうどウィキペディアで検索
誰かがCPOL(無料)のライセンスで、C#1に2つの平滑化アルゴリズムを移植しました、こちらを参照してください。
所属していません StackOverflow