메인 콘텐츠로 건너뛰기
퍼지 사각형은 경계가 특정 허용 범위 내에 위치하는 사각형들의 한 클래스(집합)를 설명하는 구조입니다. 퍼지 사각형은 두 개의 사각형, 즉 외부 사각형과 내부 사각형으로 구성됩니다. FlexiLayout 언어에서 퍼지 사각형은 FuzzyRect 타입으로 표현됩니다. 아래 그림에서 볼 수 있듯이, 일반적인 경우 모든 경계에 대한 제약이 설정되어 있으면, 요소에 대한 어떤 가설에도 반드시 포함되어야 하는 검색 영역의 일부가 존재합니다. 이 부분이 내부 사각형을 형성합니다. 가능한 가설들을 모두 외접하는 최대 크기의 사각형이 외부 사각형을 형성합니다. 내부 사각형과 외부 사각형을 보여 주는 사각형 다이어그램 요소의 경계를 다음과 같이 정의해 보자:
LeftBound: [L1, L2], where L1 <= L2
TopBound: [T1, T2], where T1 <= T2
RightBound: [R1, R2], where R1 <= R2
BottomBound: [B1, B2], where B1 <= B2
그러면 지정된 경계에 대한 정보를 포함하는 퍼지 사각형은 다음과 같이 구성됩니다: InternalRect: [L2, T2, R1, B1], ExternalRect: [L1, T1, R2, B2]. 사용자가 검색 영역의 경계에 대한 제약 조건을 설정하지 않으면, 내부 사각형은 축소되어 기하학적 의미를 잃게 됩니다. 이 경우 L1=R1, L2=R2, T1=B1, T2=B2입니다. 이제 검색 영역에 대해 어떤 제약 조건도 지정되지 않았다고 가정해 봅시다. 이때 허용되는 최대 및 최소 페이지 수가 모두 1이라면, 검색 영역의 퍼지 사각형은 다음과 같이 생성됩니다:
LeftBound: [PageRect.Left, PageRect.Right]
TopBound: [PageRect.Top, PageRect.Bottom]
RightBound: [PageRect.Left, PageRect.Right]
BottomBound: [PageRect.Top, PageRect.Bottom]
InternalRect: [PageRect.Right, PageRect.Bottom, PageRect.Left, PageRect.Top]
ExternalRect: [PageRect.Left, PageRect.Top, PageRect.Right, PageRect.Bottom]
다중 페이지 문서의 경우:
LeftBound: [-INF, INF]
TopBound: [-INF, INF]
RightBound: [-INF, INF]
BottomBound: [-INF, INF]
InternalRect: [INF, INF, -INF, -INF]
ExternalRect: [-INF, -INF, INF, INF]
위의 수식에서 볼 수 있듯이, 외부 사각형은 전체 페이지를 나타내는 사각형과 일치하며, 내부 사각형은 퇴화하여 높이와 너비가 음수가 됩니다.

퍼지 사각형에 대한 연산

퍼지 사각형에 대해서는 합집합과 교집합을 구할 수 있습니다. 두 퍼지 사각형의 교집합을 구하면 서로 대응되는 경계들이 교차합니다. 한 사각형의 오른쪽 경계는 다른 사각형의 오른쪽 경계와, 왼쪽 경계는 왼쪽 경계와 같은 방식으로 교차합니다. 이렇게 해서 경계들에 대한 새로운 구간이 정의됩니다.
LeftBound: [L1', L2']
TopBound: [T1', T2']
RightBound: [R1', R2']
BottomBound: [B1', B2']
결과 퍼지 사각형은 다음 결과 구간을 사용하여 생성됩니다: InternalRect: [L2’, T2’, R1’, B1’], ExternalRect: [L1’, T1’, R2’, B2’]. 교집합 연산의 결과로 퍼지 사각형을 생성하기 위한 조건 (L1 <= L2, T1 <= T2, R1 <= R2, B1 <= B2) 중 하나라도 만족되지 않으면, 결과 퍼지 사각형은 초기화됩니다. 즉, InternalRect: [0, 0, 0, 0], ExternalRect: [0, 0, 0, 0]으로 설정됩니다. 일반적으로 비어 있는 퍼지 사각형은 서로 모순되는 조건의 결과로 생성되며, 예를 들어 외부 경계가 서로 교차하지 않는 두 퍼지 사각형의 교집합을 시도하는 경우가 이에 해당합니다. 퍼지 사각형의 합집합 연산도 동일한 방식으로 수행됩니다. 먼저 각 경계의 구간을 합칩니다. 두 구간을 합친 결과, 지정된 두 구간을 모두 포함하는 최소 구간이 생성됩니다. 그런 다음, 합쳐진 경계를 기반으로 새로운 퍼지 사각형이 형성됩니다. 실제 사용에서는 내부 사각형이 퇴화한(degenerated) 퍼지 사각형을 가장 자주 접하게 됩니다. 특정 경계에 제약을 설정해야 하는 경우는 드뭅니다. 그러나 요소의 검색 영역은 항상 퍼지 사각형과 제외 사각형들의 배열로 표현됩니다.