4

我正在尝试平滑多边形的边缘。这适用于允许用户放大和缩小的地图应用程序。在高缩放时,我不需要所有细节,所以我平滑多边形以减少点数。我只是遍历所有点并删除距离最后一个 X 距离内的任何点。其中 X 在生成的屏幕上适当地为 1 个像素。

这似乎工作得很好,除了在少数情况下。例如,如果用户放大,我会放大矢量,同时异步加载细节。在加载额外的细节时,用户会看到如下图所示的内容:

显示问题的放大矢量图像

方形矢量多边形的角在不经意间有些圆润。

我正在寻找的是一种平滑或调整大小的算法,它将减少绘制多边形的点数,同时保持一些特征,例如角落。

4

2 回答 2

3

也许你可以使用类似Douglas-Peucker算法的东西。

它可用于通过删除不会“过多”改变整体形状的点来简化折线(其中公差值控制“过多”的含义)。

我希望这会沿着折线的“直线”部分移除点,同时保持尖锐特征(如角落)完好无损。

希望这可以帮助。

于 2011-11-26T00:54:04.610 回答
1

您可以检查点两侧的两条线形成的角度,并且仅在角度低于指定阈值时才删除该点。

于 2011-11-26T08:45:50.723 回答