メインコンテンツへスキップ
ファジー矩形とは、境界が特定の許容範囲内にある矩形の集合を記述する構造です。ファジー矩形は、外側の矩形と内側の矩形という2つの矩形で構成されます。 FlexiLayout 言語では、ファジー矩形は FuzzyRect 型で表されます。 下図のとおり、一般にすべての境界に制約がある場合、要素に対するどの仮説にも必ず含まれるべき探索領域の一部が存在します。この部分が内側の矩形を形成します。可能な仮説を外接する最大サイズの矩形が外側の矩形を形成します。 内側と外側の矩形を示す Rectangle の図 要素の境界を次のようにします:
LeftBound: [L1, L2]、ここで L1 <= L2
TopBound: [T1, T2]、ここで T1 <= T2
RightBound: [R1, R2]、ここで R1 <= R2
BottomBound: [B1, B2]、ここで 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]
複数ページのDocumentの場合:
LeftBound: [-INF, INF]
TopBound: [-INF, INF]
RightBound: [-INF, INF]
BottomBound: [-INF, INF]
InternalRect: [INF, INF, -INF, -INF]
ExternalRect: [-INF, -INF, INF, INF]
上記の式からわかるように、外側のRectangleはページ全体のRectangleと一致し、内側のRectangleは退化して高さ・幅が負の値になります。

あいまいな Rectangle に対する操作

あいまいな Rectangle は、和集合や共通部分(交差)を取ることができます。2 つのあいまいな Rectangle の交差を求めると、対応する各境界同士が交差します。つまり、一方の Rectangle の右境界は他方の右境界と、左は左といった具合です。これにより、各境界に対して新たな範囲が得られます。
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]。通常、空のファジー矩形は矛盾する条件の結果として生成されます。例えば、外側の境界が交差しない二つのファジー矩形を交差させようとした場合などです。 ファジー矩形の和集合も同様です。まず各境界の範囲を結合します。二つの範囲を結合した結果、両方の指定範囲を包含する最小の範囲が得られます。境界を結合した後、新しいファジー矩形が形成されます。 実務では、内部矩形が退化しているファジー矩形に遭遇することが最も多いでしょう。特定の境界に制約を設定する必要があるのはまれです。ただし、要素の検索領域は常にファジー矩形と除外された矩形の配列で表されます。