我用Java做一个项目。对于项目,我必须根据它们的坐标排列正方形(我创建的类,我将在末尾给出代码)(窗口的左上角被选为0,0)。现在,正方形位于ArrayList中。我认为重要的是要说并非所有这些都具有相同的尺寸,而是一起形成一个矩形(或正方形)。我想过用二维数组排列它们。有人知道怎么做?
public class Square3D extends Frame {
public Point3D p1, p2, p3, p4;
public Color color;
public Square3D() {
this.p1 = new Point3D(0, 0, 0, 1);
this.p2 = new Point3D(0, 60, 0, 1);
this.p3 = new Point3D(60, 60, 0, 1);
this.p4 = new Point3D(60, 0, 0, 1);
this.color = Color.blue;
}
}
您可以假设所有“正方形”都是矩形或正方形(在每一个中,X和Y之间的比例相同)。
答案 0 :(得分:2)
您可以使用kd树或矩形树。当你只有正方形时,你也可以尝试四叉树。如果要打包树,可以使用树形图算法并将矩形放在适合的位置,然后沿2轴拆分树。以下是一个示例:http://codeincomplete.com/posts/2011/5/7/bin_packing/。
答案 1 :(得分:0)
你的意思是画一个方格列表吗?像这样......
for (Square3D square : square3DArrayList)
{
//TODO draw square at square.p1, square.p2, square.p3, square.p4
}