Quad (クアッド)#

Quad(四角形または四辺形とも呼ばれる)は、平面上の数学的な四角形を表すもので、ul(上部左側)、ur(上部右側)、ll(下部左側)、lr(下部右側)の4つの Point (ポイント) オブジェクトのシーケンスとして定義されます。

Quadはテキスト検索メソッド( Page.search_for() など)の結果として 取得でき 、テキストマーカーアノテーション Page.add_squiggly_annot() などを参照)の定義や、Page.draw_oval() / Shape.draw_quad() などのいくつかの描画メソッドで使用されます。

注釈

  • 四角形の角が 回転スケール、または 移動 Matrix (マトリックス) で変換される場合、結果の四角形は 長方形 です(長方形と合同の意味)、つまりそのすべての角は再び90度の角度を囲んでいます。Quad.is_rectangular プロパティは、四角形がこのような操作の結果であるかどうかを確認します。

  • これはすべての行列に対して当てはまるわけではありません。例えば、シア行列は平行四辺形を生成し、非可逆行列は三角形や線のような「退化」した四角形を提供します。

  • 属性 Quad.rect は包括的な長方形を取得します。その逆も成り立ち、長方形には Rect.quadIRect.quad 属性が含まれ、それぞれそれらの四辺形バージョンを取得できます。

メソッド / 属性

短い説明

Quad.transform()

行列を使用して変換します

Quad.morph()

ポイントと行列を使用して変換します

Quad.ul

左上のポイント

Quad.ur

右上のポイント

Quad.ll

左下のポイント

Quad.lr

右下のポイント

Quad.is_convex

四角形が凸集合である場合は true

Quad.is_empty

四角形が空の集合である場合は true

Quad.is_rectangular

四角形が長方形と合同である場合は true

Quad.rect

最も小さい包含 Rect (矩形)

Quad.width

最も長い幅の値

Quad.height

最も長い高さの値

クラスAPI

class Quad#
__init__(self)#
__init__(self, ul, ur, ll, lr)#
__init__(self, quad)#
__init__(self, sequence)#

オーバーロードされたコンストラクター: "ul"、"ur"、"ll"、"lr"は point_like オブジェクト(4つの角)を表し、"sequence" は4つの point_like オブジェクトを持つPythonのシーケンスです。

"quad" が指定されている場合、コンストラクターはそれの 新しいコピー を作成します。

パラメーターが指定されていない場合、4つの Point(0, 0) のコピーからなる四角形が作成されます。

transform(matrix)#

四角形の各角を行列で変換して四角形を変更します。

パラメータ:

matrix (matrix_like) -- 行列。

morph(fixpoint, matrix)#

(バージョン1.17.0で新たに導入) マトリクスのようなものを使用して四角形を"変形"させ、固定ポイントとしてポイントライクを使用します。

パラメータ:
  • fixpoint (point_like) -- ポイント。

  • matrix (matrix_like) -- 行列。

戻り値:

新しい四角形(これが無限の四角形の場合、操作は行われません)。

rect#

四角形を含む最小の長方形で、以下の図の青い領域で表されます。

_images/img-quads.jpg
Type:

Rect (矩形)

ul#

左上のポイント

Type:

Point (ポイント)

ur#

右上のポイント

Type:

Point (ポイント)

ll#

左下のポイント

Type:

Point (ポイント)

lr#

右下のポイント

Type:

Point (ポイント)

is_convex#
  • 新しいバージョン1.16.1で追加されました

このクアッドの任意の2点について、それらを結ぶ直線上のすべての点もこのクアッドに属するかどうかをチェックします。

_images/img-convexity.png
Type:

bool

is_empty#

Enclosed areaがゼロの場合はTrueで、これは4つの角のうち少なくとも3つが同じ直線上にあることを意味します。これがfalseの場合、クアッドは依然として退化しているか、全くテトラゴンのようには見えないかもしれません(三角形、平行四辺形、台形など)。

Type:

bool

is_rectangular#

4つの角のすべての角度が90度の場合はTrueです。これは、クアッドが 凸面であり、空ではない ことを意味します。

Type:

bool

width#

上辺と下辺の最大の長さ。

Type:

float

height#

上辺と下辺の最大の長さ。

Type:

float

リマーク#

このクラスはシーケンスプロトコルに従っており、要素にはインデックスを使用できます。また、PythonシーケンスをPyMuPDFで引数として使用する場合 を参照してください。

代数と包含チェック#

v1.19.6から、クアッドは他のジオメトリオブジェクトと同様に代数的な式で使用できるようになりました - 対応する制限が解除されました。特に、次の包含チェックの組み合わせがすべて可能になりました。

{Point | IRect | Rect | Quad} in {IRect | Rect | Quad}

次の興味深い詳細に注意してください:

長方形の場合、その上辺のみがそれに属しています。v1.19.0以降、長方形は「オープン」であると定義されており、その底辺と右端はそれに属していません - それには対応する角も含まれます。しかし、クアッドには「オープン」のような概念が存在しないため、次のようなやや驚くべき含意があります:

>>> rect.br in rect
False
>>> # but:
>>> rect.br in rect.quad
True

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.

Discord logo