【问题标题】:Computing the Convex Hull of two non intersecting polygon in scipy在 scipy 中计算两个不相交多边形的凸包
【发布时间】:2017-03-17 16:57:46
【问题描述】:

是否有任何计算两个不相交多边形的凸包的 scipy 方法?我有 2 组点 P1 和 P2 以及它们的凸包 CH(P1) 和 CH(P2),其中包不相交。我想找到 P1 和 P2 中点联合的凸包。 scipy中有内置方法吗?

【问题讨论】:

  • 编码问题和关于特定编程库或语言的问题在 CS.SE 上是题外话,但可以在 Stack Overflow 上提问。请参阅我们的help center。 CS.SE 适用于关于概念、算法和科学的问题。

标签: convex-hull


【解决方案1】:

可以在here 找到 Scipy 的凸包实现的文档。只需连接两个点数组即可获得它们的并集。将此集合提供给凸包算法。

每个多边形中的每个点都位于其多边形的凸包内。反过来,两个多边形的凸包都完全包含在较大的凸包内。因此,每个多边形中的每个点都位于较大的凸包内,这意味着它对于多边形点的完全联合也是有效的。

【讨论】:

  • 但是当将点的并集提供给方法时,复杂度为 nlogn,而并集的凸包可以在线性时间内确定。
  • 您是正确的,linear algorithm 存在可以解决您的问题。然而,这是一个非常具体的优化,没有在 SciPy 中实现。你真的需要线性解决问题吗?除非你有大量的点,否则它不会更快。
  • 我的一项任务需要它。这不是任务的主要部分。我想我可以忍受它。它只是不会使算法成为 nlogn 。
  • 我之前评论中的链接指向一本书,它有一个你可以使用的实现,但它不在 Python 中。
  • 是的,我知道这一点。我在想是否有捷径可以做到这一点。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 2017-07-05
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2020-02-16
  • 2013-11-25
相关资源
最近更新 更多