あいまい矩形
あいまい矩形は、境界が特定の許容範囲内にある矩形のクラスを記述する構造です。あいまい矩形は、外部矩形と内部矩形の2つの矩形で構成されます。
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]
and in the case of a multi-page document:
LeftBound: [-INF, INF]
TopBound: [-INF, INF]
RightBound: [-INF, INF]
BottomBound: [-INF, INF]
InternalRect: [INF, INF, -INF, -INF]
ExternalRect: [-INF, -INF, INF, INF]
上の式の通り、外部矩形はページ全体の矩形と一致し、内部矩形は退化して負の高さと幅になっています。
あいまい矩形を結合して交差させることができます。2つのあいまい矩形が交わると、それらの対応する境界が交わります: 1つの矩形の右境界が他の矩形の右境界と交わり、左境界は左などと交わります。これで境界の新しい範囲ができます:
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)の生成条件の1つでも満たされないと、結果のあいまい矩形は破棄されます:InternalRect:[0, 0, 0, 0], ExternalRect:[0, 0, 0, 0].通常、空のあいまい矩形は、外部境界が交わらない2つのあいまい矩形を交差させようとする場合など、矛盾した条件の結果として生成されます。
あいまい矩形は同じ方法で結合されます: 最初に各境界の範囲が結合されます。2つの範囲を結合した結果、指定した範囲の両方を含む最小範囲が作成されます。境界が結合されると、新しいあいまい矩形が形成されます。
実際、一番多く目にするのは退化した内部矩形のあるあいまい矩形です。特定の境界に制限を設定する必要がでてくるのはまれです。それでも、要素の検索領域は、常に、あいまい矩形と除外された矩形の配列で表されます。
12.04.2024 18:16:07