获得最佳矩形

时间:2014-07-14 09:44:52

标签: java algorithm rectangles

我有一个矩形和一个其他矩形列表。 我想从列表中获取矩形,根据我的矩形,它具有最佳的宽度,高度和宽高比。

实施例 运行我的代码后,最好的矩形应该是矩形3。 请注意,矩形1是我的矩形但旋转。 enter image description here

我尝试了什么(检查最接近的宽度+高度值)

    Rectangle myRectangle = new Rectangle(......)
 Rectangle[] rectangles = new Rectangle[] {
     new Rectangle(.....), new Rectangle(....).......
 };
 int bestRectangle = 0;
 float min = 999999;
 for (int i = 0; i < rectangles.length; i++) {
     float difference = myRectange.width + myRectangle.height - rectangles[i].width - rectangles[i].height;
     if (Math.abs(difference) < min) {
         min = (Math.abs(difference); bestRectangle = i;
         }
     }

问题在于,我图像中最好的矩形是矩形1 ..

有没有人有更好的想法?

1 个答案:

答案 0 :(得分:1)

您没有减去高度并计算绝对差异。而不是:

float difference = myRectange.width + myRectangle.height - rectangles[i].width + rectangles[i].height;

使用它:

float difference = Math.abs(myRectange.width - rectangles[i].width) + Math.abs(myRectangle.height - rectangles[i].height);

您的方法中没有使用aspect ratio。你应该在你的条件下添加它。