PyBresenham
A Python module of generators that generate x, y coordinates for various vector shapes such as lines, rectangles, etc. Named after Bresenham of line-algorithm fame.
For example:
>>> import pybresenham >>> pybresenham.line(0, 0, 3, 6) <generator object line at 0x00000000030923B8> >>> list(pybresenham.line(0, 0, 3, 6)) [(0, 0), (0, 1), (1, 2), (1, 3), (2, 4), (2, 5), (3, 6)]
PyBresenham is currently under development, and is seeking contributors!
Installation
pip install pybresenham
Quickstart Guide
Get the points of a line from (0, 0) to (5, 10):
>>> import pybresenham
>>> for x, y in pybresenham.line(0, 0, 5, 10):
... print('(%s, %s)' % (x, y))
...
(0, 0)
(0, 1)
(1, 2)
(1, 3)
(2, 4)
(2, 5)
(3, 6)
(3, 7)
(4, 8)
(4, 9)
(5, 10)
>>> list(pybresenham.line(0, 0, 5, 10))
[(0, 0), (0, 1), (1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7), (4, 8), (4, 9), (5, 10)]
Get the points of a multiline from (0, 0) to (2, 0) to (2, 2):
>>> import pybresenham >>> list(pybresenham.lines([(0, 0), (2, 0), (2, 2)])) [(0, 0), (1, 0), (2, 0), (2, 1), (2, 2)]
Get the points of a circle, centered on (0, 0), with radius 3:
>>> list(pybresenham.circle(0, 0, 3)) [(0, -3), (3, 0), (0, 3), (1, -3), (3, -1), (3, 1), (-1, 3), (-3, -1), (-3, 1), (-1, -3), (1, 3), (2, -2), (2, 2), (-2, 2), (-2, -2)]
Get a quick drawing of the above circle:
>>> import pybresenham >>> pybresenham._drawPoints(pybresenham.circle(0, 0, 3), bg=' ') OOO O O O O O O O O O O OOO
Get a quick drawing of a square and rectangle:
>>> import pybresenham >>> list(pybresenham.square(0, 0, 4)) [(0, 0), (1, 0), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (2, 3), (1, 3), (0, 3), (0, 2), (0, 1)] >>> pybresenham._drawPoints(pybresenham.square(0, 0, 4), bg=' ') OOOO O O O O OOOO >>> pybresenham._drawPoints(pybresenham.rectangle(0, 0, 15, 4), bg=' ') OOOOOOOOOOOOOOO O O O O OOOOOOOOOOOOOOO>>> drawPoints(polygon(10, 10, 8, 5), bg=' ') O O O O OO O O OO O O O O O O O O O O O O O O O O O O O OOOOOOOOO>>> drawPoints(polygon(10, 10, 8, 5, rotationDegrees=20), bg=' ') OO O OOO O OO O OO O O O O O O O O O O O O O O O OO O OO O OOO OO
Road Map
The following functions aren’t yet implemented:
ellipse()
ellipseVertices()
arc()
arcVertices()
star()
starVertices()
hexGrid()
hexGridVertices()
hexGridInterior()
bezier()
bezierVertices()
roundedBox()
roundedBoxVertices()
The thickness, filled, endcap, and viewport parameters are still unimplemented. (Except for square() and rectangle(), which do implement the filled parameter.)
Metadata
Release files for PyBresenham 0.0.7
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 |
|---|---|---|---|---|
| PyBresenham-0.0.7.tar.gz | 20.1 kB | Without provenance | Details for PyBresenham-0.0.7.tar.gz |
Release files / PyBresenham-0.0.7.tar.gz
| Download URL | PyBresenham-0.0.7.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
955626c635a2b9c88de607d7e3db3105ef297a3d69589544f5983c4db8253943
|
|
BLAKE2b-256 checksum How to use checksums |
8d79e867c1e56c4de6e1e0312e2ff44f1222eacbf1f6265c0666d468ced34e43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0
|
Security for PyBresenham 0.0.7
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.