谷歌关闭 - 非重叠平铺矩形

时间:2013-07-31 05:49:34

标签: javascript math google-closure

我正在尝试使用谷歌闭包编写一个应用程序,该应用程序覆盖具有非重叠矩形的平面区域。我的一个要求是能够在平面上取一个点(可能有任何浮点坐标)并识别覆盖该点的单个矩形。不幸的是,这导致使用closure的矩形类出现问题。

例如,考虑两个单位尺寸的矩形,其左上角位于(0,0)和(1,1)。我通常会认为这些矩形是非重叠的,但是闭包的矩形类告诉我两者都包含点(1,1)。

有没有办法让闭合认为这些矩形不重叠?或者另一种生成包含所有可能坐标但不重叠的矩形的方法(例如,指定矩形一边的大小是小于1的最大数字的方式)?

1 个答案:

答案 0 :(得分:0)

对于你的问题:你不能让闭合认为这些矩形不重叠。而且你不能生成覆盖所有空间但不重叠的矩形。

但你这是错误的方式。只需定义哪个边缘属于哪个方块 - 例如每个方块都拥有它的顶部和左边界。现在使用闭包来获得所有接触给定点的矩形,并忽略那些点是底部或右角的一部分。

但有些注意事项:正方形不能拥有完整的左边框,因为两个正方形共享该边框上的一个像素。因此,正方形不拥有其左下角的像素。但是,我解释这些步骤的方式处理了这个问题。您还需要考虑您想要在覆盖空间的右下角发生什么。如果你的空间是你的矩形大小的倍数,那么你必须在右下角添加例外,或者矩形只有线条,右下角的那个甚至只有一个点。