簡體   English   中英

用於在多邊形內擬合矩形的算法

[英]an algorithm for fitting a rectangle inside a polygon

我有一種切割問題。 有一個不規則的多邊形,沒有任何孔和標准尺寸的矩形瓷磚及其值的列表。

我想要一個有效的算法來找到適合這個多邊形的單個最佳值瓦片; 或者只是說單個圖塊是否適合多邊形內部的算法。 對於小於100個頂點的不規則多邊形,它應該在確定的時間內運行。

請考慮您可以旋轉多邊形和瓷磚。 凸起和非凸多邊形的答案/提示是值得贊賞的。

免責聲明:我從未閱讀過任何關於此的文獻,因此可能有更好的方法。 這個解決方案就是我在閱讀完你的問題后想到的。

矩形有兩個重要的尺寸 - 它的高度和寬度

現在,如果我們從一個多邊形和一個矩形開始:

多邊形和矩形

1:繞過多邊形的周邊並記下矩形高度適合多邊形的所有位置(可以將其存儲為多邊形*):

高度適合哪里?

2:繞過你剛剛制作新多邊形的周長,記下矩形寬度適合多邊形的所有位置(同樣,你可以將它存儲為多邊形):

寬度適合哪里?

3:矩形應該適合這個新的多邊形(只是要小心你正確地將矩形定位在多邊形內部,因為這是一個多邊形 - 而不是一個矩形。如果你將矩形的左上角節點與左上角的節點對齊這個新的多邊形,你應該沒問題)

4:如果找不到矩形適合的區域,則將多邊形旋轉幾度,然后再試一次。

*注意:在某些多邊形中,您可以獲得多個矩形可以安裝:

這里可以安裝多個矩形

經過許多無望的搜索,我認為沒有任何特定的算法來解決這個問題。 直到,我發現這篇關於多邊形遏制問題的舊論文。
那篇文章提出了一個非常好的算法,可以考慮一個帶有n個點的多邊形是否可以適合具有m個點的多邊形。
該算法通常為O(n ^ 3立方米(n + m)log(n + m)),用於兩個可移動和可旋轉的2D多邊形。

如果您在計算幾何中搜索這種不規則算法,我希望它可以幫到您。

這可能有所幫助。 它附帶了Java編寫的源代碼

http://cgm.cs.mcgill.ca/~athens/cs507/Projects/2003/DanielSud/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM