我有一个矩形和一个其他矩形列表。 我想从列表中获取矩形,根据我的矩形,它具有最佳的宽度,高度和宽高比。
实施例 运行我的代码后,最好的矩形应该是矩形3。 请注意,矩形1是我的矩形但旋转。
我尝试了什么(检查最接近的宽度+高度值)
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 ..
有没有人有更好的想法?
答案 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
。你应该在你的条件下添加它。