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.

Filename, size & hash SHA256 hash help File type Python version Upload date
PyBresenham-0.0.6.tar.gz (19.4 kB) Copy SHA256 hash SHA256 Source None Aug 28, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page