(我會將它標記爲Java和語言無關的,因爲我認爲這個想法並不真的需要Java,但這是我的特定應用程序,所以IDK中的哪一個兩個標籤是合適的)。在與給定矩形相交的網格中查找單元格
比方說,我有一個任意數量的行和列以及任意單元大小的網格。
此網格代表2d空間。現在假設我在這個2D空間中有一個矩形 - 過去,我記得能夠找回所有與矩形相交的單元格,(無需循環),但此時數學正在逃避我。
爲了鞏固這個例子,假設有12行和10列。單元格是256平方(所以256行高,列寬256)。如果在x:400,y:300是200x200的矩形,我知道它會與第二行中的第二列和第三列相交。
因此,如果細胞結構,像這樣定義:
// reference[rows][columns]
SomeCellClass[][] cells = SomeCellClass[12][10]
然後交叉將SomeCellClass[1][1]
和SomeCellClass[1][2]
,理想的回報會像
private SomeCellClass[] blah(){
// do work
SomeCellClass[] product = new SomeCellClass[total];
SomeCellClass[0] = // first one that intersects...
SomeCellClass[1] = // second one that intersects...
// etc...
}
東西,我記得將矩形的位置和尺寸除以單元格大小和地板/天花板以獲得索引bu,有些事情要做我無法理解這些細節。再次,我得到如何用循環做到這一點,但希望能夠只使用數學和數組索引。
任何幫助,將不勝感激。
TYIA。
如果你想弄清楚數學,我建議在紙上畫出來...... – 2013-03-03 01:36:33
@OliCharlesworth我試過了。我想我可以得到邊緣,但是如何讓中間的細胞逃脫我(例如,想象一個跨越4或5列的非常長的矩形)。 – momo 2013-03-03 01:38:40
如果你想要一個所有單元格索引的數組,那麼你將需要一個循環。 – 2013-03-03 01:39:28