Skip to main content

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:

Installation

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.

Usage

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

Development

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 https://github.com/encukou/bresenham

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.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

bresenham-0.2.1-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file bresenham-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: bresenham-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.2

File hashes

Hashes for bresenham-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c076b8bf730adb65cc5037d26639a5629dd63f6c1481d80b6856c99d47a1c6bf
MD5 fcd47129040882327ed805a238275cc4
BLAKE2b-256 71dbb614ac2ef531a4ea5402342db8630f4842388fb86e4640c81b0e23b16d64

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