2017-02-20 40 views
2

我有一组元素(它们是具有绝对坐标的DOM元素,但问题更多地是关于JavaScript的算法,一旦我用getBoundingClientRect获取它们的坐标()问题的其余部分足够通用,以至于适用于其他领域)。我需要确定这些矩形定义的区域是否为矩形。下面是一些例子:确定由一组矩形元素定义的区域是否为矩形

enter image description here

元素就不会重合,我试图找出一个有效的算法,用于确定区域是否是矩形的,优选以线性时间。虽然如果它具有更高的时间复杂度,那么它就不是世界的尽头,只要它被认为对于用户来说是瞬间的即可。我的用例基本上是一个游戏,如果选定的元素不对齐,将拒绝用户的操作。

回答

3

既然你能保证没有重叠,你可以:

  • 通过寻找最极端的左/右/上/下找到的最小边界矩形
    • 坐标
  • 发现边界矩形区域
  • 找到矩形区域的总和。

如果边界矩形具有与所有矩形区域的总和相同的面积,那么这些矩形都将整齐地匹配在边界矩形中。

+0

辉煌,谢谢! –

相关问题