(我会为 Java 和与语言无关的标记,因为我认为这个想法并不真正需要 Java,但这是我的特定应用程序,所以 IDK 这两个标记中的哪一个是合适的)。
假设我有一个具有任意行数和列数以及任意单元格大小的网格。
这个网格代表一个二维空间。现在假设我在那个二维空间的某个地方有一个矩形 - 在过去,我记得能够取回与矩形相交的所有单元格(无需循环),但现在数学正在逃避我。
为了巩固这个例子,假设有 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...
}
我记得它与将矩形位置和尺寸除以单元格大小和地板/天花板以取回索引有关,但我无法理解具体细节。同样,我知道如何使用循环执行此操作,但希望能够仅使用数学和数组索引。
任何帮助,将不胜感激。
蒂亚。