Rect

Rect 는 4개의 부동 소수점 숫자 x0, y0, x1, y1로 정의된 사각형을 나타냅니다. 이것들은 대각선으로 반대편에 있는 두 점의 좌표로 처리됩니다. 처음 두 숫자는 “왼쪽 위” 모서리 P(x0,y0) 로 간주되고 P(x1,y1) 는 “오른쪽 아래” 모서리로 간주됩니다. 그러나 이 두 속성은 직관적인 의미와 일치할 필요가 없습니다 – 계속 읽어보세요.

다음 설명은 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)인 경우 width (각각 height)는 0으로 설정 됩니다. 이전 버전에서는 너비 또는 높이 중 하나가 0인 경우에만 사각형이 비어 있었습니다.

  • 사각형 좌표는 FZ_MIN_INF_RECT = -2147483648 부터 FZ_MAX_INF_RECT = 2147483520 까지의 숫자 범위 밖에 있을 수 없습니다. 두 값은 C float 변환 왕복에서 살아남는 가장 작은/가장 큰 32비트 정수이기 때문에 선택되었습니다. 이전 버전에서는 좌표 값에 제한이 없었습니다.

  • 정확히 하나의 “무한” 사각형 이 있으며, x0 = y0 = FZ_MIN_INF_RECTx1 = y1 = FZ_MAX_INF_RECT 로 정의됩니다. 이것은 다른 모든 사각형을 포함합니다. 이것은 주로 기술적 목적으로 사용됩니다 – 예를 들어 함수 호출이 형식적으로 필요한 사각형 인수를 무시해야 할 때. 이 사각형은 비어 있지 않습니다.

  • 사각형은 (반)열림: 오른쪽과 아래쪽 가장자리(각각의 모서리 포함)는 사각형의 일부로 간주되지 않습니다. 이것은 왼쪽 위 모서리 (x0, y0) 만 사각형에 속할 수 있음을 의미합니다 – 다른 세 모서리는 절대 속하지 않습니다. 빈 사각형은 모서리가 전혀 없습니다.

  • 다음은 변경 사항의 개요입니다.

    개념

    버전 < 1.19.0

    버전 1.19.*

    비어 있음

    x0 = x1 또는 y0 = y1

    x0 >= x1 또는 y0 >= y1 – 무효한 사각형 포함

    유효

    해당 없음

    x0 <= x1 및 y0 <= y1

    무한

    x0 > x1 또는 y1 > y0인 모든 사각형

    정확히 하나의 무한 rect / irect!

    좌표 값

    모든 숫자

    FZ_MIN_INF_RECT <= number <= FZ_MAX_INF_RECT

    경계, 모서리

    사각형의 일부

    오른쪽 및 아래쪽 모서리와 가장자리는 외부

  • 무한 및 표준 빈 사각형과 quad를 정의하는 새로운 최상위 함수가 있습니다. INFINITE_RECT() 및 관련 항목을 참조하세요.

메서드 / 속성

간단한 설명

Rect.contains()

point_like 및 rect_like의 포함 여부 확인

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_left, bottom_rightpoint_like 객체를 나타내고, “sequence”는 4개의 숫자로 구성된 Python 시퀀스 유형( 에서 Python 시퀀스를 인수로 사용하기 참조)이며, “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_like) – 변환을 위한 행렬.

반환 형식:

Rect

반환:

변환된 원본을 포함하는 가장 작은 사각형.

intersect(r)

현재 사각형과 r 의 교집합(공통 사각형 영역, 둘 다에 포함된 가장 큰 사각형)이 계산되어 현재 사각형을 대체 합니다. 사각형 중 하나가 비어 있으면 결과도 비어 있습니다. r 이 무한이면 아무 작업도 수행하지 않습니다. 사각형이 (수학적으로) 서로소 집합이면 결과는 무효입니다. 결과가 유효하지만 비어 있으면 사각형은 모서리 또는 (일부) 변에서 서로 접촉합니다.

매개변수:

r (rect_like) – 두 번째 사각형

include_rect(r)

현재 사각형과 r 을 포함하는 가장 작은 사각형이 계산되어 현재 사각형을 대체 합니다. 사각형 중 하나가 무한이면 결과도 무한입니다. r 이 비어 있으면 현재 사각형은 변경되지 않습니다. 현재 사각형이 비어 있으면 r 로 대체됩니다.

매개변수:

r (rect_like) – 두 번째 사각형

include_point(p)

현재 사각형과 point_like p 를 포함하는 가장 작은 사각형이 계산되어 현재 사각형을 대체 합니다. 무한 사각형은 변경되지 않습니다. 점 시퀀스를 감싸는 사각형을 만들려면 EMPTY_RECT() 로 시작하여 시퀀스의 멤버를 순차적으로 포함하세요.

매개변수:

p (point_like) – 포함할 점.

get_area([unit])

사각형의 영역을 계산하며, 매개변수 없이는 abs(rect) 와 같습니다. 빈 사각형과 마찬가지로 무한 사각형의 영역도 0입니다. 따라서 pymupdf.Rect(p1, p2)pymupdf.Rect(p2, p1) 중 적어도 하나는 영역이 0입니다.

매개변수:

unit (str) – 필요한 단위 지정: px (픽셀, 기본값), in (인치), cm (센티미터) 또는 mm (밀리미터)의 각각의 제곱.

반환 형식:

float

contains(x)

x 가 사각형에 포함되어 있는지 확인합니다. 이것은 IRect, Rect, Point 또는 숫자일 수 있습니다. x 가 빈 사각형이면 이것은 항상 true입니다. 사각형이 비어 있으면 모든 비어 있지 않은 사각형과 모든 점에 대해 이것은 항상 False 입니다. x in rectrect.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 를 사용하여 사각형에 행렬을 적용한 후 새 quad를 반환합니다.

매개변수:
  • fixpoint (point_like) – 고정점.

  • matrix (matrix_like) – 행렬.

반환:

Quad. 이것은 동일한 이름의 quad 메서드의 래퍼입니다. 무한이면 무한 quad가 반환됩니다.

norm()
  • 버전 1.16.0에서 새로 추가됨

4개의 숫자 벡터로 처리된 사각형의 유클리드 노름을 반환합니다.

normalize()

사각형을 유효한 버전으로 대체 합니다. 이것은 사각형 모서리를 재배치하여 수행됩니다. 이 메서드 완료 후, 오른쪽 아래 모서리는 실제로 왼쪽 위 모서리의 남동쪽이 됩니다(하지만 여전히 비어 있을 수 있습니다).

irect

메서드 round() 의 결과와 같습니다.

top_left
tl

Point(x0, y0) 와 같습니다.

유형:

Point

top_right
tr

Point(x1, y0) 와 같습니다.

유형:

Point

bottom_left
bl

Point(x0, y1) 와 같습니다.

유형:

Point

bottom_right
br

Point(x1, y1) 와 같습니다.

유형:

Point

quad

사각형 Quad(rect.tl, rect.tr, rect.bl, rect.br).

유형:

Quad

width

사각형의 너비. max(x1 - x0, 0) 와 같습니다.

반환 형식:

float

height

사각형의 높이. max(y1 - y0, 0) 와 같습니다.

반환 형식:

float

x0

왼쪽 모서리의 X 좌표.

유형:

float

y0

위쪽 모서리의 Y 좌표.

유형:

float

x1

오른쪽 모서리의 X 좌표.

유형:

float

y1

아래쪽 모서리의 Y 좌표.

유형:

float

is_infinite

이것이 무한 사각형이면 True.

유형:

bool

is_empty

사각형이 비어 있으면 True.

유형:

bool

is_valid

사각형이 유효하면 True.

유형:

bool

참고

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.