按坐标排列方块

时间:2013-11-19 14:06:59

标签: java arraylist 2d graphics2d

我用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之间的比例相同)。

2 个答案:

答案 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
}