【问题标题】:Given a set of coordinate points, remove inner points (or find the outer ring of points) to form polygon [closed]给定一组坐标点,删除内部点(或找到点的外环)以形成多边形 [关闭]
【发布时间】:2014-01-30 09:48:44
【问题描述】:

对于我的 d3 项目,我有一系列相邻的多边形,我想计算一个新的多边形,它是所有较小多边形放在一起的外边界。

我已将几个连接多边形的所有点合并到一个数组中以创建一个大多边形。但这包括所有内部边缘以及外部边缘。我想删除这个合并多边形的内边缘,这样我就只有一个形状代表该区域的外边界,但我找不到合适的算法来做到这一点。

我找到了this,但它要求多边形的顶点已经明确知道;我只有一组点,没有外在和内在的区别。

删除生成的多边形的内部点后,我想在外部点周围绘制一条带有“基数”插值的线。这就是为什么我必须保持点的完整性而不是将多边形转换为弧并使用类似topojson.mesh!

这里有一个屏幕截图可以更清楚地解释:

绿色多边形的所有顶点(红线的角)都连接成一个点数组。我想弄清楚如何删除内部点,以便我可以在剩余的外部点周围应用“基数”插值线。

【问题讨论】:

  • “点”是指黑点还是线段端点?
  • @Clive 和其他人我不知道为什么搁置问题的人会抱怨它,如果我,写答案的人,并且大概更了解相关技术领域,我没有抱怨吗?
  • @Qantas 94 重磅,能否请您重新提出这个问题,关闭的原因不准确?太多的好问题被关闭了。我分几段回答了这个问题。让我们说三个答案,这个问题不太可能得到更多。
  • @davidkonrad,能否请您重新提出这个问题,关闭的原因看起来不准确。太多的好问题被关闭了。我分几段回答了这个问题。这个问题不太可能得到比三个答案更多的答案。 quy 需要指导他应该查看 API 的哪一部分(这是 D3 库 API)。
  • @xan,是的,好问题,我明白你的观点,线段端点在这里看起来是一种更合适的选择。

标签: javascript d3.js convex-hull


【解决方案1】:

数学家会说你需要计算凸包:

D3 为此类算法提供接口。

文档是here。您必须仔细阅读。

有一个使用示例here。和你想要的不一样,但是你可以通过学习来熟悉界面。

你大概可以在网上找到其他使用 D3 凸包算法的例子。

一旦您了解了文档和示例,您就应该准备好将您的新知识应用到您的问题中。

如果您对代码集成有其他问题,可以提出另一个问题。

希望这会有所帮助。

【讨论】:

  • 感谢您的回答。我什至不知道从哪里开始。可惜它被关闭了。
  • 谢谢,这不涉及凸多边形,我猜这要复杂得多。但它让我开始。
  • 在 google、here 和数学网站上搜索 Polygon union。
  • 另外,也许您可​​以创建所有多边形的片段列表,并删除多次提及的片段,剩下的就是您的联合 poligon。 :)
猜你喜欢
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 2018-02-14
  • 2014-11-12
  • 2012-04-25
  • 2015-01-16
  • 1970-01-01
  • 2019-12-27
相关资源
最近更新 更多