2014-07-14 51 views
-5

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

例子 我运行我的代码后,最好的矩形应该是矩形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

分别将它们分别计算 – Sneftel

+0

分别计算宽度和高度的差值 –

+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虽然。你应该添加它也在你的情况。

+0

谢谢,我想这样做,编辑我的问题,我只是写了算法在我的脑海里......但会有相同的结果.. –