0

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

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

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

4

1 回答 1

0

对您的问题:您不能关闭考虑这些矩形不重叠。而且您不能生成覆盖所有空间但不重叠的矩形。

但是你这样做是错误的。只需定义哪条边属于哪个方格——例如,每个方格都有自己的上边界和左边界。现在使用闭包来获取所有接触给定点的矩形,并忽略那些点是底角或右角的一部分。

不过有一些注意事项:正方形不能拥有完整的左边框,因为两个正方形在该边框上共享一个像素。所以正方形不拥有它的左下角像素。不过,我解释这些步骤的方式可以解决这个问题。您还需要考虑您希望在覆盖空间的右下角发生什么。如果您的空间是矩形大小的倍数,那么您要么必须在右下角添加例外,否则矩形将只有线条,右下角的线条甚至只有一个点。

于 2013-07-31T10:37:42.917 回答