包装矩形,紧凑的表示

ste*_*nea 6 algorithm packing rectangles

我正在寻找解决以下问题的指针:我有一组矩形,其高度已知,x位也是,我想以更紧凑的形式打包它们.使用一个小图画(所有矩形宽度相同,但宽度可能在现实生活中有所不同),我想,而不是.

-r1-
  -r2--
     -r3--
       -r4-
        -r5--
Run Code Online (Sandbox Code Playgroud)

就像是.

-r1-  -r3-- 
  -r2-- -r4-
         -r5--
Run Code Online (Sandbox Code Playgroud)

所有提示将不胜感激.我不一定在寻找"最佳"解决方案.

Jas*_*per 1

像这样的东西吗?

  • 按 x 位置对矩形集合进行排序
  • 编写一个方法来检查 x 轴的特定间隔上存在哪些矩形

    Collection<Rectangle> overlaps (int startx, int endx, Collection<Rectangle> rects){
    ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 循环矩形集合

    Collection<Rectangle> toDraw;
    Collection<Rectangle> drawn;
    foreach (Rectangle r in toDraw){
    Collection<Rectangle> overlapping = overlaps (r.x, r.x+r.width, drawn);
    int y = 0;
    foreach(Rectangle overlapRect in overlapping){
    y += overlapRect.height;
    }
    drawRectangle(y, Rectangle);
    drawn.add(r);
    }
    
    Run Code Online (Sandbox Code Playgroud)