甲计算几何问题:
点P0
随机选择上的多边形的边(例如,EB
)(例如,BCDE
),以找到可能的点(即,P1,P2,P3,...
)上的其他基于给定距离的边(即,r
)。以下演示通过找到以点号P0
为中心的圆与多边形边之间的交点来显示解决方案。所以这个问题基本上可以通过Circle--Line-Segment
相交分析来解决。圈多边形交点
我想知道有没有更高效的方法这个非常简单的问题就计算成本而言?该过程将被评估几个million times
,所以任何改进都是有意义的。
- 最终解决方案将受益于Python功耗;
- 核心计算将在Fortran如果需要。
更新:
感谢您的意见。请考虑我对评论的评论,这有助于澄清更多问题。不愿在这里重复,鼓励考虑所有评论和答案;)。
我刚刚实施了基于[here]算法的Circle--Line-Segment Intersection
的方法。事实上,我调整它适用于线段。在Python实现的算法的基准如下:
线段的数目是:100,000
和系统通常是桌面。所用时间为:15 seconds
。希望这些有助于给出一些计算成本的概念。在Fortan的核心实现可以显着提高性能。
但是,翻译是最后一步。
所有百万个查询的距离“r”是否相同?我们可以指望多边形是凸的吗? –
@BorisStrandjev对于我们的问题,所有的多边形都是凸的。对于每次迭代,“r”可能会有所不同,因此它可能会变化,但对于每个多边形都是不变的。 – Developer
并且是在单个多边形或不同的数百万个查询中完成的? –