【发布时间】:2014-07-17 01:51:41
【问题描述】:
我正在解决一个问题,该问题涉及创建一个图表,该图表显示三个或更多圆的交集区域(每个圆的大小相同)。我有很多组圆圈,每组至少包含三个圆圈。我需要绘制集合中每个圆圈内部的公共区域,如果它甚至存在的话。如果集合内的所有圆圈都没有相交的区域,我就没有什么可绘制的了。所以最终的结果是一个图形,上面有很多相交的圆圈。
我已经有了一个用 Python 和 matplotlib 编写的解决方案,但它的性能不是很好。这以前不是问题,但现在我需要将它应用到更大的数据集,所以我需要一个更好的解决方案。我目前的方法基本上是一种测试和检查蛮力方法:我检查一个区域内的各个点,看看它们是否在那个共同的交叉点(通过检查从点到每个圆中心的距离)。如果该点符合该标准,我会绘制它并继续前进。否则,我只是不绘制它并继续前进。所以它有效,但它需要很长时间。
为了澄清,我不会扫描整个平面中的每个点来寻找每组圆。首先,我将我的“搜索”区域缩小为一个围绕集合中前两个(任意选择)圆圈的矩形,然后测试并检查其中的每个点。
我在想,如果有一种方法可以让我绘制一组中的每个圆(比如一组中有 5 个圆),每个圆的 alpha 值为 0.1,那就太好了。然后,我可以返回并只保留 alpha 值为 0.5 的区域,因为这是所有 5 个圆相交的区域,这就是我想要的。如果不采用相同的蛮力测试和检查策略,我无法弄清楚如何使用 matplotlib 或使用其他任何东西来实现这一点。
我也熟悉 Java 和 C++,如果有人对这些语言有一个好主意的话。谢谢!
【问题讨论】:
标签: python graph matplotlib geometry intersection