Zum Hauptinhalt springen
Fuzzy-Rectangle ist eine Struktur, die eine Klasse von Rechtecken beschreibt, deren Begrenzungen innerhalb bestimmter zulässiger Bereiche liegen. Ein Fuzzy-Rectangle besteht aus zwei Rechtecken: einem externen und einem internen Rechteck. In der FlexiLayout-Sprache werden Fuzzy-Rectangle durch den Typ FuzzyRect dargestellt.

Interne und externe Rechtecke

Wie die folgende Abbildung zeigt, gibt es im allgemeinen Fall, wenn für alle Begrenzungen Einschränkungen festgelegt sind, einen Teil des Suchbereichs, der bei jeder Hypothese für das Element enthalten sein muss. Dieser Teil bildet das interne Rechteck. Das größtmögliche umschreibende Rechteck der möglichen Hypothese bildet das externe Rechteck.
Diagramm eines Fuzzy-Rectangle, das das interne Rechteck und das externe Rechteck zeigt, die den Suchbereich eines Elements in ABBYY FlexiLayout Studio begrenzen.
Die Begrenzungen des Elements seien:
Dann wird das Fuzzy-Rectangle, das die angegebenen Informationen zu den Begrenzungen enthält, wie folgt gebildet: InternalRect: [L2, T2, R1, B1], ExternalRect: [L1, T1, R2, B2]. Wenn für die Begrenzungen des Suchbereichs keine Einschränkungen festgelegt sind, degeneriert das interne Rechteck und ist geometrisch nicht sinnvoll. In diesem Fall gilt L1=R1, L2=R2, T1=B1, T2=B2.

Suchbereich ohne Einschränkungen für die Begrenzungen

Angenommen nun, für den Suchbereich wurden keine Einschränkungen angegeben. Wenn dann die maximal und minimal zulässige Seitenanzahl 1 ist, wird das Fuzzy-Rectangle des Suchbereichs wie folgt erstellt:
Bei einem mehrseitigen Dokument wird das Fuzzy-Rectangle des Suchbereichs wie folgt erstellt:
Wie diese Ausdrücke zeigen, entspricht das äußere Rechteck dem Rechteck der gesamten Seite, und das innere Rechteck degeneriert und hat negative Höhe und Breite.

Vereinigung und Schnittmenge von Fuzzy-Rectangle

Fuzzy-Rectangle lassen sich vereinigen und schneiden. Wenn zwei Fuzzy-Rectangle geschnitten werden, schneiden sich ihre entsprechenden Begrenzungen: Die rechte Begrenzung des einen Rechtecks schneidet sich mit der rechten Begrenzung des anderen, die linke mit der linken und so weiter. Dadurch entstehen neue Intervalle für die Begrenzungen:
Das resultierende Fuzzy-Rectangle wird aus den resultierenden Intervallen gebildet: InternalRect: [L2’, T2’, R1’, B1’], ExternalRect: [L1’, T1’, R2’, B2’]. Wenn infolge des Schnitts mindestens eine der Bedingungen zum Erzeugen des Fuzzy-Rectangle (L1 <= L2, T1 <= T2, R1 <= R2, B1 <= B2) nicht erfüllt ist, wird das resultierende Fuzzy-Rectangle auf null gesetzt: InternalRect: [0, 0, 0, 0], ExternalRect: [0, 0, 0, 0]. In der Regel entsteht ein leeres Fuzzy-Rectangle durch widersprüchliche Bedingungen, zum Beispiel wenn Sie versuchen, zwei Fuzzy-Rectangle zu schneiden, deren externen Begrenzungen sich nicht überschneiden. Fuzzy-Rectangle werden auf dieselbe Weise vereinigt: Zuerst werden die Intervalle jeder Begrenzung vereinigt. Durch die Vereinigung der beiden Intervalle entsteht ein minimales Intervall, das beide angegebenen Intervalle umfasst. Nachdem die Begrenzungen vereinigt wurden, wird ein neues Fuzzy-Rectangle gebildet. In der Praxis begegnen Sie meist Fuzzy-Rectangle mit einem degenerierten internen Rechteck. Nur selten müssen Sie Einschränkungen für eine bestimmte Begrenzung festlegen. Der Suchbereich für ein Element wird jedoch immer durch ein Fuzzy-Rectangle und ein Array ausgeschlossener Rechtecke dargestellt.