2013-07-31 44 views
0

我想使用谷歌關閉來寫一個應用程序,覆蓋一個平面與非重疊的矩形區域。我要求的一個要求是能夠在平面上取一個點(可能帶有任何浮點座標)並確定覆蓋該點的單個矩形。不幸的是,這導致了使用閉包矩形類的問題。谷歌關閉 - 不重疊的平鋪矩形

例如,考慮左上角位於(0,0)和(1,1)處的兩個單位尺寸的矩形。我通常會認爲這些矩形是不重疊的,但是閉合的矩形類告訴我兩個都包含點(1,1)。

有沒有一種方法可以使閉合考慮這些矩形不重疊?或者另一種方法來生成包含所有可能的座標但不重疊的矩形(例如,指定矩形的一邊的大小是小於1的最大數的方式)?

回答

0

對於你的問題:你不能使閉包考慮這些矩形不重疊。而且不能生成覆蓋所有空間但不重疊的矩形。

但是你正在做錯誤的方式。只需確定哪些邊緣屬於哪個方形 - 例如每個廣場都擁有其頂部和左側邊框。現在使用閉包來獲得所有觸及賦予點的矩形,並忽略這些點位於底部或右角的一部分。

雖然有一些注意事項:正方形不能擁有它們的完整左邊界,因爲兩個正方形共享該邊界上的像素。所以一個正方形不擁有它的左下像素。不過,我解釋這些步驟的方式可以解決這個問題。您還需要考慮您想要在隱蔽空間右下角發生的事情。如果你的空間是你的矩形大小的倍數,那麼你必須在右下角添加例外,否則矩形將只有線,即使在右下角也只有一個點。

+0

謝謝;我認爲更簡單的方法實際上是使用我自己的矩形類。開發一個並不困難,而使用半開範圍會導致這個問題消失。我只是想知道爲什麼谷歌自己不這樣做,幾乎每個人都這樣做... – Jules