頂点のリストと領域(正方形/長方形)のリストがあります。頂点にはx座標とy座標があり、領域には(x、y、高さ、幅)があります。すべての頂点/領域について、どの頂点がどの領域にあるかを効率的に確認するにはどうすればよいですか?
編集:
これは私がこれを行うために書いたコードです。
if (!g.getVertices().isEmpty()) {
for (int i = 0; i < g.getVertices().size(); i++) {
Vertex v = g.getVertices().get(i);
Point vertexPoint = new Point(v.getX(), v.getY());
for (int j = 0; j < g.getNumberOfRegions(); j++) {
int x = g.getRegions().get(j).getX();
int y = g.getRegions().get(j).getY();
int height = g.getRegions().get(j).getHeight();
int width = g.getRegions().get(j).getWidth();
Grid regionGrid = new Grid(j+1, x, y, height, width);
Rectangle regionRectangle = new Rectangle(x, y, height, width);
if (regionRectangle.contains(vertexPoint)) {
System.out.println("Vertex " + v + " lies inside region " + regionGrid.getRegionID());
}
}
}
}
編集2:これを使用して領域を生成しましたが、グリッド内の各領域に左から右にregionIDを割り当てる方法が必要です。例えば:
1 - 2 - 3
4 - 5 - 6
7 - 8 - 9
3x3グリッドの場合。現時点では、次の形式になっています。
1 - 1 - 1
2 - 2 - 2
3 - 3 - 3
for (int i = 0; i < rowValue; i++) {
for (int j = 0; j < columnValue; j++) {
Grid r = new Grid(0, 20 + i * size, 20 + j * size, size, size);
r.setRegionID(j + 1);
g.addRegion(r);
}
}