2014-07-14 3 views
-5

나는 사각형과 다른 사각형 목록을 가지고 있습니다. 내 직사각형에 따라 너비, 높이 및 종횡비가 가장 좋은 직사각형을 목록에서 가져 오려고합니다.최상의 사각형 얻기

예 코드를 실행 한 후 가장 좋은 사각형은 3이어야합니다. 사각형 1은 내 사각형이지만 회전됩니다. enter image description here

나는

사람을 가지고 .. 내 이미지에서 최상의 사각형이 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

abs 별도로 – 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

고마워, 내 질문을 편집하고 싶었어, 방금 내 마음에 알고리즘을 썼다.하지만 같은 결과가있을거야. –