【发布时间】:2010-11-30 14:32:44
【问题描述】:
我有一条 2D 闭合折线,它相当平滑。但是,定义多段线的顶点的间距不相等。有时两个会非常接近,有时多达四个会非常接近。
我想平滑折线,但常规平均算法往往会缩小区域:
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);
}
我的折线包含数千个点,两个相邻线段之间的角度通常小于 1 度。
有没有更好的方法来平滑这些曲线,这样可以更均匀地间隔顶点,而不会对区域造成太大影响?
【问题讨论】:
-
“顶点间距更均匀”是什么意思?平滑算法要么放大信号,要么压缩信号。
-
让我们看看我是否可以在 ascii 中做到这一点......想象一下我有以下折线(点是角): ●─●─●─●─────────── ──● 我想把它改成: ●────●────●────●────● “顶点间距”我的意思是我想让它们之间的距离任何给定的相邻顶点更相似。
标签: c# geometry smoothing polyline