Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

An implementation of Bresenham's line drawing algorithm

Project description

The bresenham module

A simple implementation of Bresenham’s line drawing algorithm.

See the Wikipedia entry for details on what that is.

Note that this is a simple implementation. It is written in Pure Python (without e.g. numpy), so it is relatively slow.

I found some beauty in combining the classic algorithm (whose ingenuity lies in using only integers – a constraint that isn’t really as relevant now) with a Python generator (a modern device that follows the spirit of “executable pseudocode”, abstracting away the output subroutine). I hope others can appreciate the code as well.

For serious use, look at these:


In a Python virtual environment, do:

python -m pip install bresenham

To install from a Git checkout (in editable mode):

python -m pip install -e.

To install without a virtual envitonment, add the --user option.


The bresenham(x0, y0, x1, y1) function returns a generator of the coordinates of the line from (x0, y0) to (x1, y1).

For example, the coordinates of a line from (-1, -4) to (3, 2), are:

>>> from bresenham import bresenham

>>> list(bresenham(-1, -4, 3, 2))
[(-1, -4), (0, -3), (0, -2), (1, -1), (2, 0), (2, 1), (3, 2)]


You’re welcome to join this project!

If you spot an issue, please report it at the Issues page on Github.

If you’d like to start changing the code or documentation, check out the code locally using:

git clone

If you’re new to this, please read the this guide about collaborating on Github-hosted projects like this one.

If that doesn’t make sense, please e-mail the author for clarification. I’d be happy to help you get started.

Project details

Download files

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

Files for bresenham, version 0.2.1
Filename, size File type Python version Upload date Hashes
Filename, size bresenham-0.2.1-py3-none-any.whl (3.7 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page