Rect¶
Rect 는 4개의 부동 소수점 숫자 x0, y0, x1, y1로 정의된 사각형을 나타냅니다. 이것들은 대각선으로 반대편에 있는 두 점의 좌표로 처리됩니다. 처음 두 숫자는 “왼쪽 위” 모서리 P(x0,y0) 로 간주되고 P(x1,y1) 는 “오른쪽 아래” 모서리로 간주됩니다. 그러나 이 두 속성은 직관적인 의미와 일치할 필요가 없습니다 – 계속 읽어보세요.
다음 설명은 IRect 객체에도 유효합니다:
(Py-) MuPDF (및 PDF) 의 의미에서 사각형은 항상 x축 및 y축에 평행한 경계 를 가집니다. 일반적인 직교 사각형은 사각형이 아닙니다 – 수학적 정의와 대조적으로.
구성 점은 평면의 어디에나 있을 수 있습니다(거의! – 아래 참조) – 서로 다를 필요도 없으며, 예를 들어 “왼쪽 위”가 기하학적으로 “북서쪽” 점일 필요는 없습니다.
단위는 포인트이며, 72포인트는 1인치입니다.
- 주어진 4개의 숫자에 대해 기하학적으로 “동일한” 사각형은 4가지 다른 방법으로 정의할 수 있습니다:
Rect(P(x0,y0), P(x1,y1))
Rect(P(x1,y1), P(x0,y0))
Rect(P(x0,y1), P(x1,y0))
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_RECT및x1 = 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()및 관련 항목을 참조하세요.
메서드 / 속성 |
간단한 설명 |
|---|---|
point_like 및 rect_like의 포함 여부 확인 |
|
사각형 영역 계산 |
|
점도 포함하도록 사각형 확대 |
|
다른 사각형도 포함하도록 사각형 확대 |
|
다른 사각형과의 공통 부분 |
|
비어 있지 않은 교집합 확인 |
|
점과 행렬로 변환 |
|
다른 사각형으로 변환하는 행렬 |
|
유클리드 노름 |
|
사각형을 유효하게 만듦 |
|
사각형을 포함하는 가장 작은 IRect 생성 |
|
행렬로 사각형 변환 |
|
왼쪽 아래 점, 동의어 bl |
|
오른쪽 아래 점, 동의어 br |
|
사각형 높이 |
|
메서드 round() 의 결과와 같음 |
|
사각형이 비어 있는지 여부 |
|
사각형이 유효한지 여부 |
|
사각형이 무한한지 여부 |
|
왼쪽 위 점, 동의어 tl |
|
오른쪽 위 점, 동의어 tr |
|
사각형 모서리로 만든 Quad |
|
사각형 너비 |
|
왼쪽 모서리의 x 좌표 |
|
오른쪽 모서리의 x 좌표 |
|
위쪽 모서리의 y 좌표 |
|
아래쪽 모서리의 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_right 는
point_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)
사각형이 비어 있으면 결과도 비어 있습니다.
가능한 역설: 사각형이 비어 있지 않아도 결과가 비어 있을 수 있습니다! 이러한 경우 결과는 명백히 사각형을 포함하지 않습니다. 이것은 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
- 반환 형식:
- 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_likep를 포함하는 가장 작은 사각형이 계산되어 현재 사각형을 대체 합니다. 무한 사각형은 변경되지 않습니다. 점 시퀀스를 감싸는 사각형을 만들려면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 rect와rect.contains(x)는 동일합니다.- 매개변수:
x (
rect_likeorpoint_like.) – 확인할 객체.- 반환 형식:
bool
- intersects(r)¶
사각형과
rect_like“r”이 공통의 비어 있지 않은 Rect 를 포함하는지 확인합니다. 둘 중 하나가 무한이거나 비어 있으면 이것은 항상False입니다.- 매개변수:
r (rect_like) – 확인할 사각형.
- 반환 형식:
bool
- torect(rect)¶
버전 1.19.3에서 새로 추가됨
이 사각형을 주어진 사각형으로 변환하는 행렬을 계산합니다.
- 매개변수:
rect (rect_like) – 대상 사각형. 비어 있거나 무한이 아니어야 합니다.
- 반환 형식:
- 반환:
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¶
- top_right¶
- bottom_left¶
- bottom_right¶
- 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
참고
이 클래스는 Python 시퀀스 프로토콜을 따르므로 구성 요소는 인덱스를 통해 액세스할 수도 있습니다. 에서 Python 시퀀스를 인수로 사용하기 도 참조하세요.
사각형은 산술 연산자와 함께 사용할 수 있습니다 – 기하 객체를 위한 연산자 대수 장을 참조하세요.
