我正在嘗試編寫一個函數,它需要兩個重疊的矩形,並返回一個覆蓋矩形A區域但排除矩形B區域的矩形數組。看看這個算法看起來像什麼,因爲可能碰撞的數量是巨大且難以解釋的。在JavaScript中剪裁矩形
tl; dr我試圖使用另一個矩形剪裁矩形,導致覆蓋其餘區域的矩形集合。
|-------------| |-------------|
|A | |R1 |
| |-------|----| |-----|-------|
| |B | | To |R2 |
| | | | ====> | |
| | | | | |
|-----|-------| | |-----|
| |
|------------|
POSSIBLE OVERLAP PATTERNS
|-----| |-----| |-----| |-----|
| |---|-| |-|---| | | |-| | | |-| |
|-|---| | | |---|-| |-|-|-| | |-| |
|-----| |-----| |-| |-----|
|-| |-----| |-----|
|-|-|-| | |---|-| |-|---| |
| |-| | | |---|-| |-|---| |
|-----| |-----| |-----|
注意,可能的重疊圖案是兩倍示出,因爲矩形A和B可以是醚矩形任何上述內容中重疊圖案。
這可能是使用了頂點這個可行的。您可以根據B中頂點之間的距離A計算新的矩形座標。 – Nikki
存在另一個問題,結果有時會超過一個矩形。我認爲在一到九之間。 –
當然有一個標準的算法?無論如何;一個主意。有4個座標和4個y座標,您的新區域將始終是這些區域的組合。 4 x座標將畫布分成5個垂直波段,y座標劃分爲5個水平波段,如果最差的情況最差,則有25個不重疊的矩形屬於A,B,兩者都不是。你保留僅屬於A的屬性並排除所有其他屬性。 – boisvert