Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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
Javascript 多边形边的平滑算法_Javascript_Algorithm_Computational Geometry - Fatal编程技术网

Javascript 多边形边的平滑算法

Javascript 多边形边的平滑算法,javascript,algorithm,computational-geometry,Javascript,Algorithm,Computational Geometry,我使用Node.js和凹面外壳算法来隔离英国邮政编码部门。 这就是我现在得到的: 现在,我需要平滑边界,使其看起来像这样: 有人知道我应该使用哪种算法吗?似乎有很多方法可以做到这一点。我倾向于引用某种贝塞尔插值() @amit给出了另一个关于如何解决这个问题的很好的线索,样条曲线实际上对于平滑多边形非常有用。见相关问题: 希望有帮助 至少有两种方法: 曲线拟合算法(最适合您的用例) Rammer-Douglas-Peucker算法(更易于实现) Rammer-Douglas-Peucke

我使用Node.js和凹面外壳算法来隔离英国邮政编码部门。 这就是我现在得到的:

现在,我需要平滑边界,使其看起来像这样:


有人知道我应该使用哪种算法吗?

似乎有很多方法可以做到这一点。我倾向于引用某种贝塞尔插值()

@amit给出了另一个关于如何解决这个问题的很好的线索,样条曲线实际上对于平滑多边形非常有用。见相关问题:

希望有帮助

至少有两种方法:

  • 曲线拟合算法(最适合您的用例)
  • Rammer-Douglas-Peucker算法(更易于实现)
Rammer-Douglas-Peucker算法减少了多边形的节点数-这不会使多边形平滑,因为它会使多边形弯曲,它只会减少节点(粗糙度),同时尽量保持多边形的原始形状

虽然你是,最有可能的,之后是一个曲线拟合算法,通过一系列的点


请参阅我所做的(以及上面更具描述性的答案)以获取解决方案。

我想到的变体问题是,您有多个不相交的多边形,但希望在它们之间画一条线。我可以尝试表示这些多边形之间的区域,然后以某种方式将它们“挤压”成直线。或者“生长”多边形直到它们接触。我如何生长它们直到它们接触?我应该使用什么?@elektro_pionirka您可以搜索多边形偏移来生长它们,以及搜索多边形相交检测来检测它们是否接触