2017-10-30 2 views
0

나는 10 * 10, 100의 큰 사각형을 가지고 있습니다. 예를 들어, 고정 된 영역의 6 개의 사각형을 영역으로 찾고 있습니다. 10 * 10입니다.큰 사각형에 고정 된 영역의 사각형을 맞추기

6 개의 사각형에는 고정 된 영역이 있지만 고정 된 너비/높이는 없습니다. 해당 영역은 항상 100 개까지 추가되므로 실제로는 더 큰 영역의 비율입니다.

1 행을 갖고 싶지 않고 각 사각형의 너비를 변경하고 싶습니다. 직사각형을 가능한 한 사각형에 가깝게 유지하는 가장 효율적인 방법으로 사각형을 배치하는 방법을 원합니다.

감사합니다.

-Solved-

+2

이것이 도움이 될지 모르겠지만 Google은 2D bin 포장 알고리즘을 사용하면 많은 예제를 찾을 수 있습니다. – Yeak

답변

1

는이 일을 몇 가지 방법이 있습니다, 그래서 난 그냥 아직도 상당히 괜찮은 결과를 제공한다 방법 (약간 비효율적 인 경우) 간단한 예제는 이해하는 줄 것이다.

  1. 상자를 최대 크기에서 최소 크기로 주문하십시오.
  2. 첫 번째 상자가 사각형이 될 것이라고 가정합니다 (끝나지는 않지만 닫을 것입니다). sqrt(area[1])을 가져 가면 옆면 길이가 나옵니다. 너비를 첫 번째 열에 대해 원하는 너비로 가져갑니다.
  3. 너비가 주어지면 해당 열에서 가능한 한 많은 행을 채우십시오.
  4. 칼럼에 넣은 총 면적을 더하십시오. 그 너비가 너비에 맞도록 크기를 조정하십시오 (이제는 조금 더 얇아 질 것입니다).
  5. 나머지 나머지 상자에 대해 1-3 단계를 반복하십시오. 열의 첫 번째 상자의 대상 너비가 남은 공간보다 넓은 지점에 이르면 해당 너비를 사용하십시오.
  6. 나머지 상자는 해당 열의 남아있는 공간에 잘 맞아야합니다.

이렇게하면 다양한 높이 구분으로 정렬 된 열이 제공됩니다. 또는 "행"과 "열"을 뒤집어 다양한 열 분할을 사용하여 일정한 행 구분을 얻을 수 있습니다.

+0

감사합니다! 이것은 정확히 내가 찾고 있었던 것입니다 : D –

+0

흠, 방금 해보려고했는데, 사각형이 정확한 영역이더라도 항상 큰 사각형의 무작위 너비가 있습니다. 나는 여분의 지역이 어디로오고가는 지 모르겠다 .-. –

+0

왜 그런지 정확히 모르겠지만, 결국에는 모든 상자의 너비가 바뀌어 내부에 들어갈 수있게되었습니다. –

관련 문제