Skip to main content

Zingl Path Plotting

Project description


Zingl-Bresenham plotting algorithms.

The Zingl-Bresenham plotting algorithms are from Alois Zingl's "The Beauty of Bresenham's Algorithm" ( ). They are all MIT Licensed and this library is also MIT licensed. In the case of Zingl's work this isn't explicit from his website, however from personal correspondence "'Free and open source' means you can do anything with it like the MIT licence[sic]."

These algorithms are error-carry-forward algorithms such that they use only integer math to plot pixel positions, and curves like quadratic and cubic beziers do not need to be turned into tiny lines or checked for how small a line should be used. They merely travel from one pixel to the next pixel carrying the error forward.


This library is a series of plot line generators converted from C++.

  • plot_line(x0, y0, x1, y1)
  • plot_quad_bezier_seg(x0, y0, x1, y1, x2, y2)
  • plot_quad_bezier(x0, y0, x1, y1, x2, y2)
  • plot_cubic_bezier_seg(x0, y0, x1, y1, x2, y2, x3, y3)
  • plot_cubic_bezier(x0, y0, x1, y1, x2, y2, x3, y3)
  • plot_line_aa(x0, y0, x1, y1)
  • plot_line_width(x0: int, y0: int, x1: int, y1: int, wd: float)

These do Zingl-Bresenham algorithms for line, quad, cubic. The _seg function perform the draw but only for rational segments (no inversion points). The _aa function performs the same thing but in an anti-alias manner.

from zinglplotter import plot_line
for x, y in plot_line(0, 0, 5, 8):

Will result in: python (0,0) (1,1) (1,2) (2,3) (3,4) (3,5) (4,6) (4,7) (5,8)

from zinglplotter import plot_quad_bezier
for x, y in plot_quad_bezier(0, 0, 9, 4, 0, 10):

Will result in: (0,0) (1,0) (2,1) (3,2) (4,3) (5,4) (5,5) (5,5) (5,6) (4,7) (3,8) (2,9) (1,9) (0,10)

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

zinglplotter-1.0.0.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

zinglplotter-1.0.0-py2.py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 2 Python 3

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