rects
A library for unions, intersections, subtractions, and xors of rectangles.
The result of set operations on two rects are shown by the green regions below:
Regions
Let's say we have the following rects:
+------------+ +--------+
| | | B |
| +-----------+ |
| A | C | |
| +-----------+----+
| |
+------------+
And we want to represent the region A + B - C:
+------------+ +--------+
| | | |
| +---+ +---+ |
| | | |
| +---+ +----+
| |
+------------+
One method is to divide the area into a series of mutually exclusive horizontal bands:
+------------+ +--------+
| | | |
+--------+---+ +---+----+
| a | b | c | d <- 2nd band with walls at a, b, c, d.
+--------+---+ +----+
| |
+------------+
Each band is a vertical interval and a list of walls. Each contiguous pair of walls indicates a new rect in the band.
A Region is a list of sorted, mutually exclusive bands.
Using rects
To use rects, construct an initial Region, r, from some rect and iteratively
+, -, &, or ^ with other regions:
>>> from rects import *
>>> r = Region.from_rect(Rect(0, 0, 100, 200))
>>> s = Region.from_rect(Rect(10, 25, 40, 75))
>>> t = Region.from_rect(Rect(45, 75, 50, 125))
>>> r
Region(bands=[Band(y1=0, y2=100, walls=[0, 200])])
>>> v = r - s - t
>>> v
Region(bands=[
Band(y1=0, y2=10, walls=[0, 200]),
Band(y1=10, y2=45, walls=[0, 25, 100, 200]),
Band(y1=45, y2=50, walls=[0, 25]),
Band(y1=50, y2=95, walls=[0, 75]),
Band(y1=95, y2=100, walls=[0, 200])
])
>>> list(v.rects())
[
Rect(y=0, x=0, height=10, width=200),
Rect(y=10, x=0, height=35, width=25),
Rect(y=10, x=100, height=35, width=100),
Rect(y=45, x=0, height=5, width=25),
Rect(y=50, x=0, height=45, width=75),
Rect(y=95, x=0, height=5, width=200)
]
>>> v.bbox
Rect(y=0, x=0, height=100, width=200)
Metadata
Release files for rects 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| rects-0.2.0.tar.gz | 5.2 kB | Without provenance | Details for rects-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| rects-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for rects-0.2.0-py3-none-any.whl |
Total release size: 10.0 kB
Release files / rects-0.2.0.tar.gz
| Download URL | rects-0.2.0.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18dd9a16b9acca259b65750a51255b5a7529454ef2cbd605db793c9585636435
|
|
BLAKE2b-256 checksum How to use checksums |
16309cdca35a327d59e11ba72074fe0327914a40d0ac1abf36a8e370b220703e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.18
|
Release files / rects-0.2.0-py3-none-any.whl
| Download URL | rects-0.2.0-py3-none-any.whl |
|---|---|
| Size | 4.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
367b085b6f2b4cbaa09d1a1d6464856e4d80f719f0f86c0d79b289d501bb17e5
|
|
BLAKE2b-256 checksum How to use checksums |
a7767479dba4c2e0c6aa7976d3691e14aaa2424c4d757783697751763c270b03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.18
|
Security for rects 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.