我正在尝试编写一个函数,它需要两个重叠的矩形,并返回一个覆盖矩形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