2011-02-06 13 views
2

너비가 w이고 높이가 h 인 사각형이 주어진다면 그 크기가 더 크거나 작고 직사각형이 n 개 많거나 적거나 같은 간단한 알고리즘을 찾고 간단한 알고리즘을 찾고 있습니다. 이 직사각형의 중심사각형을 n 개의 작은 사각형으로 분할하고 각 중심을 계산하는 알고리즘

편집 : 모양이 사각형과 가능한 비슷해야한다는 것을 잊어 버렸습니다.

시작하는 방법에 대한 힌트가 있습니까?

+2

@ mark의 답변이 요구 사항을 충족시키지 만 "모양"에 대한 제약이 더 많은지 궁금합니다. – payne

+0

@payne : 예 Mark의 대답은 명시된 요구 사항을 충족하지만 새로운 모양이 가능한 한 사각형과 유사해야한다는 점을 잊어 버렸습니다. –

+0

나는 많은 의심을 품고, 설명해 주셔서 감사합니다. :-) – payne

답변

8

간단한 알고리즘은 높이 h와 너비 w/n의 같은 크기의 n 개의 스트립으로 세로로 분할하는 것입니다.

초기 사각형 모서리 (0,0)를 가지고 있다고 가정하면 다음 (중심했을 I 직사각형 일이 알고리즘을 사용하는 (H, w) w/N * (I + ½) H/2), 0 < = i < n.


업데이트 : 요소의 비율이 가장 가까운되도록 수의 N I이 J를 * = n 및 요인 쌍을 찾을 수 있도록 요소 쌍 (I, J)로 모든 인수 분해를 찾는 시도 사각형의 변의 비율. 그런 다음 두 가지 요소를 사용하여 작은 사각형의 규칙적인 격자를 만듭니다.

예를 들어 n이 10 일 때 (1, 10), (2, 5), (5, 2) 및 (10, 1) 중에서 선택할 수 있습니다. 여기서 요소 (5, 2)를 사용하는 예시적인 표이다 :

 
------------------------------------ 
|  |  |  |  |  | 
|  |  |  |  |  | 
------------------------------------ 
|  |  |  |  |  | 
|  |  |  |  |  | 
------------------------------------ 

초기 직사각형 다음 요소 쌍하여 폭 (60)과 높이 (20)이있는 경우 (5, 2) 60 (크기의 열 직사각형를 제공/5, 20/2) = (12, 10).

+0

고마워요. 이것은 정답이지만 다른 요구 사항을 언급하는 것을 잊어 버렸습니다. 죄송합니다. – RoflcoptrException

+0

업데이트 해 주셔서 감사합니다. 이 요인 쌍을 이해합니다. 요인 쌍을 선택하는 방법에 대한 좋은 권고가 있습니까? 어쩌면 i와 j 사이의 최소 거리를 가진 요소 쌍입니까? – RoflcoptrException

+0

그리고 또 다른 질문입니다. 홀수 n을 처리하는 방법을 알고 있습니까? 예를 들어 n = 11, width = 400 height = 400입니다. 그러면 알고리즘이 11 개의 사각형을 연속적으로 계산합니다. 그러나 예를 들어 2 X 5와 3 행 1의 정수가 더 좋을 것입니다. – RoflcoptrException

관련 문제