Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 边平滑,同时保留角点等特征_Algorithm_Language Agnostic_Vector_Smoothing - Fatal编程技术网

Algorithm 边平滑,同时保留角点等特征

Algorithm 边平滑,同时保留角点等特征,algorithm,language-agnostic,vector,smoothing,Algorithm,Language Agnostic,Vector,Smoothing,我正在尝试平滑多边形的边。这适用于允许用户放大和缩小的映射应用程序。在高缩放时,我不需要所有细节,所以我平滑多边形以减少点数。我只需迭代所有点,并删除距离最后一个点X范围内的任何点。其中X在结果屏幕上适当地为1个像素 这似乎很有效,除了少数情况。例如,如果用户放大,我会放大向量,同时异步加载细节。当加载额外细节时,用户会看到下图中的内容: 方形矢量多边形的角有些不经意地变圆了 我要寻找的是一种平滑的或调整大小的算法,它可以减少绘制多边形的点数,同时保留一些特征,例如角点。也许你可以使用类似的算

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

这似乎很有效,除了少数情况。例如,如果用户放大,我会放大向量,同时异步加载细节。当加载额外细节时,用户会看到下图中的内容:

方形矢量多边形的角有些不经意地变圆了


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

也许你可以使用类似的算法

它可以通过删除不会“太多”改变整体形状的点来简化多边形线(公差值控制“太多”的含义)

我认为这将删除多边形直线“平直”部分的点,同时保留锐利的特征(如角)完好无损


希望这会有所帮助。

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

为什么这些多边形都有超过4个宽间隔的点?这些多边形是美国国家,而不是所有的简单正方形。我只是选了一个你能看到问题的地方。但是,定义县的数据(由人口普查局提供)具有多个点的直边。希望平滑算法可以去除这些无用的点。我曾经想过,但我希望有一个更正式的算法,而不是滚动我自己的。@bramp我明白了。我要删除这个吗?Wizard先生,我不知道StackOverflow礼节是什么,但我不介意它是保留还是删除。也许有人会根据你的建议给我们一个正式的算法。