Skip to main content

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)

Source distribution for PyBresenham 0.0.7
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page