甲計算幾何問題:
點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
並且是在單個多邊形或不同的數百萬個查詢中完成的? –