Javascript 给定一组坐标点,移除内点(或找到点的外环)以形成多边形

Javascript 给定一组坐标点,移除内点(或找到点的外环)以形成多边形,javascript,d3.js,convex-hull,Javascript,D3.js,Convex Hull,对于我的d3项目,我有一系列相邻的多边形,我想计算一个新的多边形,它是所有较小多边形的外部边界 我已经将几个连接多边形的所有点合并到一个数组中,以创建一个大多边形。但这包括所有内部边缘和外部边缘。我想删除这个合并多边形的内边,这样我就只有一个表示区域外边界的形状,但是我找不到一个合适的算法来实现这一点 我发现了,但它要求多边形的顶点已经明确已知;我所拥有的只是一组点,没有外部和内部的区别 一旦我删除了结果多边形的内部点,我想用“基数”插值在外部点周围画一条线。这就是为什么我必须保持点的完整性,而

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

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

我发现了,但它要求多边形的顶点已经明确已知;我所拥有的只是一组点,没有外部和内部的区别

一旦我删除了结果多边形的内部点,我想用“基数”插值在外部点周围画一条线。这就是为什么我必须保持点的完整性,而不是将多边形转换为圆弧,并使用类似的方法

下面是一个屏幕截图,可以更清楚地解释:


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

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

D3为这种算法提供了接口

文件是。你必须仔细阅读

这里有一个用法示例。它与您想要的不一样,但是您可以通过研究它来熟悉界面

您可能会在网上找到使用D3凸包算法的其他示例

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

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


希望这有帮助。

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

D3为这种算法提供了接口

文件是。你必须仔细阅读

这里有一个用法示例。它与您想要的不一样,但是您可以通过研究它来熟悉界面

您可能会在网上找到使用D3凸包算法的其他示例

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

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


希望这能有所帮助。

所谓的“点”是指黑点还是线段端点?@Clive和其他人我不知道为什么搁置问题的人会抱怨,如果我,写答案的人,大概更了解问题的技术领域,没有抱怨的话?@Qantas 94 Heavy,你能重新回答这个问题吗?结案的原因不准确?太多的好问题被解决了。我用几段话回答了这个问题。这个问题不太可能得到更多的答案,让我们说三个答案。@davidkonrad,请你重新回答这个问题,结束的原因看起来不准确。太多的好问题被解决了。我用几段话回答了这个问题。这个问题不太可能得到三个以上的答案。quy需要指示API的哪一部分(这是D3库API)他应该看一看。@xan,是的,好问题,我明白你的观点,线段端点在这里看起来是一种更合适的选择。你说的“点”是指黑点还是线段端点?@Clive,还有一些人,我不知道为什么搁置问题的人会抱怨,如果我,写答案的人,大概更了解问题的技术领域,我不会抱怨?@Qantas 94 Heavy,你能不能重新验证这个问题,关闭的原因是不准确的?太多的好问题被解决了。我用几段话回答了这个问题。这个问题不太可能得到更多的答案,让我们说三个答案。@davidkonrad,请你重新回答这个问题,结束的原因看起来不准确。太多的好问题被解决了。我用几段话回答了这个问题。这个问题不太可能得到三个以上的答案。quy需要指示API的哪一部分(这是D3库API)他应该看一看。@xan,是的,好问题,我明白你的观点,线段端点在这里看起来是一种更合适的选择。谢谢你的回答。我甚至不知道从哪里开始。遗憾的是它被关闭了。谢谢,这不涉及凸多边形,我想凸多边形要复杂得多。但这让我开始了。在谷歌、这里和数学网站上搜索多边形联合。此外,也许你可以创建一个所有多边形段的列表,删除多次提到的多边形段,剩下的是你的联合策略。:)谢谢你的回答。我甚至不知道从哪里开始。遗憾的是它被关闭了。谢谢,这不涉及凸多边形,我想凸多边形要复杂得多。但这让我开始了。在谷歌、这里和数学网站上搜索多边形联合。此外,也许你可以创建一个所有多边形段的列表,删除多次提到的多边形段,剩下的是你的联合策略。:)