Rect (矩形)#

Rect は、4つの浮動小数点数x0、y0、x1、y1によって定義される矩形を表します。これらは対角線上の2つの点の座標と見なされます。最初の2つの数は「左上」のコーナー P(x0,y0) とし、 P(x1,y1) は「右下」のコーナーとします。ただし、これら2つのプロパティは直感的な意味と一致する必要はありません。以下を読んでください。

IRect オブジェクトにも以下の注釈は有効です。

  • (Py-)MuPDF (およびPDF) の意味での矩形は常に x-またはy軸に平行な境界 を持ちます。一般的な直交四角形は 矩形ではなく 、数学的な定義とは対照的です。

  • 構築ポイントは平面上のどこにでも配置できます。異なる必要すらなく、たとえば「左上」が幾何学的に「北西」の点である必要はありません。

  • 単位はポイントで、72ポイントが1インチです。

  • 与えられた4つの数値に対して、幾何学的に「同じ」矩形は4つの異なる方法で定義できます。
    1. Rect(P(x0,y0), P(x1,y1))

    2. Rect(P(x1,y1), P(x0,y0))

    3. Rect(P(x0,y1), P(x1,y0))

    4. Rect(P(x1,y0), P(x0,y1))

(v1.19.0で変更) したがって、いくつかの分類があります。

  • 矩形は、 x0 <= x1 および y0 <= y1 (つまり、右下の点が左上の点の「南東」にある)の場合にのみ 有効 と呼ばれます。したがって、上記の4つの代替案のうち、最初のものだけ が有効です。MuPDFの座標系では、y軸は 上から下 に向かっていますので、注意してください。無効な矩形は以前のバージョンでは 無限と呼ばれていました。

  • 矩形は、 x0 >= x1 または y0 >= y1 の場合に と呼ばれます。これは、無効な矩形 も常に空であることを意味します。また、 x0 > x1 (または y0 > y1 )の場合、幅(または高さ)は ゼロに設定 されます。以前のバージョンでは、矩形が空であるのは幅または高さのいずれかがゼロの場合に限られていました。

  • 矩形の座標は、FZ_MIN_INF_RECT = -2147483648 から FZ_MAX_INF_RECT = 2147483520 までの数値範囲内にある必要があります。これらの値は、C浮動小数点変換のラウンドトリップを生き残る最小/最大の32ビット整数であるため選ばれました。以前のバージョンでは、座標値の制限はありませんでした。

  • 「無限」の矩形はx0 = y0 = FZ_MIN_INF_RECT および x1 = y1 = FZ_MAX_INF_RECT で定義され、他のすべての矩形を含みます。これは主に技術的な目的で使用されます。たとえば、関数呼び出しで形式的に必要な矩形引数を無視する必要がある場合などです。この矩形は空ではありません。

  • 矩形は(半)開いています。右側と下側のエッジ(およびそれに含まれるコーナー)は矩形の一部とは見なされません。したがって、矩形に属することができるのは左上のコーナー (x0, y0) のみです。他の3つのコーナーは常に含まれません。空の矩形にはまったくコーナーが含まれていません。

    _images/img-rect-contains.png
  • 以下は変更の概要です。

    概要

    バージョン < 1.19.0

    バージョン 1.19.*

    x0 = x1 または y0 = y1

    x0 >= x1 または y0 >= y1 – 無効な矩形も含む

    有効

    なし

    x0 <= x1 かつ y0 <= y1

    無限

    x0 > x1 または y1 > y0 のすべての矩形

    無限の矩形 / irectは1つだけです!

    座標値

    すべての数値

    FZ_MIN_INF_RECT <= 数値 <= FZ_MAX_INF_RECT

    境界、コーナー

    矩形の一部です

    右下の角とエッジは 外側にあります

  • 新しいトップレベルの関数が追加され、無限と標準の空の四角形および四角形を定義します。INFINITE_RECT() などを参照してください。

メソッド / 属性

短い説明

Rect.contains()

point_likesおよびrect_likesの包含をチェックします。

Rect.get_area()

四角形の面積を計算します。

Rect.include_point()

点も含むように四角形を拡大します。

Rect.include_rect()

別の四角形も含むように四角形を拡大します。

Rect.intersect()

別の四角形との共通部分です。

Rect.intersects()

非空の交差をチェックします。

Rect.morph()

点と行列を使用して四角形を変形します。

Rect.torect()

別の四角形に変換する行列です。

Rect.norm()

ユークリッドノルム

Rect.normalize()

四角形を有効にします

Rect.round()

最小の IRect を含む四角形を作成します。

Rect.transform()

行列で四角形を変形します。

Rect.bottom_left

左下の点、シノニム bl

Rect.bottom_right

右下の点、シノニム br

Rect.height

四角形の高さ

Rect.irect

round() メソッドの結果と等しい

Rect.is_empty

四角形が空かどうか

Rect.is_valid

四角形が有効かどうか

Rect.is_infinite

四角形が無限かどうか

Rect.top_left

左上の点、シノニム tl

Rect.top_right

右上の点、シノニム tr

Rect.quad

四角形の角から作成される Quad (クアッド)

Rect.width

四角形の幅

Rect.x0

左上のx座標

Rect.x1

右上のx座標

Rect.y0

上部のy座標

Rect.y1

下部のy座標

クラスAPI

class Rect#
__init__(self)#
__init__(self, x0, y0, x1, y1)#
__init__(self, top_left, bottom_right)#
__init__(self, top_left, x1, y1)#
__init__(self, x0, y0, bottom_right)#
__init__(self, rect)#
__init__(self, sequence)#

オーバーロードされたコンストラクター:top_leftbottom_rightpoint_like オブジェクトを表し、「sequence」は4つの数値からなるPythonシーケンス型です(PythonシーケンスをPyMuPDFで引数として使用する場合 を参照)、rectは別の rect_like を意味し、他のパラメーターは座標を意味します。

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

パラメーターなしで、空の長方形 Rect(0.0, 0.0, 0.0, 0.0) が作成されます。

round()#

最小の IRect を作成します。これは単に長方形のエッジを四捨五入することとは 異なります。左上のコーナーは上方向および左方向に丸められ、右下のコーナーは下方向および右方向に丸められます。

>>> pymupdf.Rect(0.5, -0.01, 123.88, 455.123456).round()
IRect(0, -1, 124, 456)
  1. もし矩形が空の場合、結果も です。

  2. 可能性のある逆説: 矩形が空で ない 場合 でも 、結果が空になることがあります!このような場合、結果は明らかに矩形を 含みません。これは、MuPDFのアルゴリズムがわずかな許容差(1e-3)を許容しているためです。例:

>>> r = pymupdf.Rect(100, 100, 200, 100.001)
>>> r.is_empty  # rect is NOT empty
False
>>> r.round()  # but its irect IS empty!
pymupdf.IRect(100, 100, 200, 100)
>>> r.round().is_empty
True
戻り値の型:

IRect

transform(m)#

次の条件を満たす場合、行列を使用して長方形を変換し、元の長方形を置き換えます :長方形が空であるか無限である場合、これは操作が行われません。

パラメータ:

m (Matrix (マトリックス)) -- m(行列)–変換用の行列。

戻り値の型:

Rect

戻り値:

変換された元の長方形を含む最小の長方形。

intersect(r)#

現在の長方形とrの共通の長方形エリア(両方に含まれる最大の長方形)を計算し、現在の長方形を置き換えます。どちらかの長方形が空の場合、結果も空になります。r が無限である場合、これは操作が行われません。長方形が(数学的に)交差していない場合、結果は無効になります。結果が有効でも空の場合、長方形は互いに角または一部の側面に接触しています。

パラメータ:

r (Rect (矩形)) -- 第二の長方形

include_rect(r)#

現在の長方形と r を含む最小の長方形を計算し、現在の長方形を置き換えます。どちらかの長方形が無限の場合、結果も無限になります。1つが空である場合、もう1つが結果として取られます。

パラメータ:

r (Rect (矩形)) -- 第二の長方形

include_point(p)#

現在の長方形と点 p を含む最小の長方形を計算し、現在の長方形を置き換えます。無限の長方形は変更されません。一連の点を含む長方形を作成するには、(空の) pymupdf.Rect(p1, p1) から始め、残りの点を順次含めてください。

パラメータ:

p (Point (ポイント)) -- 含めるポイント。

get_area([unit])#

長方形の面積を計算し、パラメーターなしで abs(rect) と同じです。空の長方形の面積はゼロであるため、少なくとも pymupdf.Rect(p1、p2)pymupdf.Rect(p2、p1) のいずれかがゼロの面積を持っている必要があります。

パラメータ:

unit (str) -- 必要な単位を指定します: px (ピクセル、デフォルト)の平方、in (インチ)、cm (センチメートル)、または mm (ミリメートル)の平方。

戻り値の型:

float

contains(x)#

x が四角形内に含まれているかどうかをチェックします。xは IRectRectPoint、または数値のいずれかです。もし x が空の四角形である場合、これは常にtrueです。四角形が空である場合、これはすべての空でない四角形とすべてのポイントに対して常にfalseです。x in rect および rect.contains(x) は同等です。

パラメータ:

x (rect_like or point_like.) -- チェックするオブジェクト。

戻り値の型:

bool

intersects(r)#

長方形と rect_like "r" が共通の非空のRectを含むかどうかをチェックします。どちらかが無限または空の場合、これは常に False になります。

パラメータ:

r (rect_like) -- チェックする長方形。

戻り値の型:

bool

torect(rect)#
  • 新機能(バージョン1.19.3)

この長方形を指定した長方形に変換する行列を計算します。

パラメータ:

rect (rect_like) -- ターゲットの長方形。空または無限であってはいけません。

戻り値の型:

Matrix (マトリックス)

戻り値:

self * mat = rect となるような行列 mat です。たとえば、ページとピクスマップの座標間を変換するのに使用できます。 使用例はこちらを参照してください ピクスマップの使用方法:テキストの表示可否の確認

morph(fixpoint, matrix)#
  • 新機能バージョン1.17.0

固定点 fixpoint を使用して、行列を長方形に適用した後の新しい四角形を返します。

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

  • matrix (matrix_like) -- 行列。

戻り値:

新しい Quad (クアッド) 。これは同じ名前の四角形メソッドのラッパーです。無限の場合、無限の四角形が返されます。

norm()#
  • 新機能バージョン1.16.0

四角形を4つの数値のベクトルとして扱った場合のユークリッドノルムを返します。

normalize()#

長方形をその有効なバージョンで 置き換えます。これは長方形のコーナーをシャッフルして行います。このメソッドの完了後、右下のコーナーは確かに左上のコーナーの南東になります(ただし、空である可能性があります)。

irect#

round() メソッドの結果と同じです。

top_left#
tl#

Point(x0, y0) と等しい。

Type:

Point (ポイント)

top_right#
tr#

Point(x1, y0) と等しい。

Type:

Point (ポイント)

bottom_left#
bl#

Point(x0, y1) と等しい。

Type:

Point (ポイント)

bottom_right#
br#

Equals Point(x1, y1).

Type:

Point (ポイント)

quad#

四角形 Quad(rect.tl, rect.tr, rect.bl, rect.br)

Type:

Quad (クアッド)

width#

長方形の幅。max(x1 - x0, 0) と等しい。

戻り値の型:

float

height#

長方形の高さ。max(y1 - y0, 0) と等しい。

戻り値の型:

float

x0#

左上の x 座標。

Type:

float

y0#

左上の y 座標。

Type:

float

x1#

右下の x 座標。

Type:

float

y1#

右下の y 座標。

Type:

float

is_infinite#

これが無限の長方形の場合は True

Type:

bool

is_empty#

これが無限の長方形である場合は True

Type:

bool

is_valid#

長方形が空である場合は True

Type:

bool

注釈

  • このクラスはPythonのシーケンスプロトコルに従っており、要素にはインデックスを使用できます。Using Python Sequences as Arguments in PyMuPDFも参照してください

  • 四角形は算術演算子と組み合わせて使用できます - 幾何学オブジェクトのためのオペレーター代数 の演算子代数の章を参照してください。


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