Skip to main content

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.

Project description

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.)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyBresenham-0.0.7.tar.gz (20.1 kB view details)

Uploaded Source

File details

Details for the file PyBresenham-0.0.7.tar.gz.

File metadata

  • Download URL: PyBresenham-0.0.7.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for PyBresenham-0.0.7.tar.gz
Algorithm Hash digest
SHA256 955626c635a2b9c88de607d7e3db3105ef297a3d69589544f5983c4db8253943
MD5 bf6cce5f7919b77adc70de8402e28731
BLAKE2b-256 8d79e867c1e56c4de6e1e0312e2ff44f1222eacbf1f6265c0666d468ced34e43

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page