Skip to main content

Zingl Path Plotting

Project description

zinglplotter

Zingl-Bresenham plotting algorithms.

The Zingl-Bresenham plotting algorithms are from Alois Zingl's "The Beauty of Bresenham's Algorithm" ( http://members.chello.at/easyfilter/bresenham.html ). 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.

Functions

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):
    print(f"({x},{y})")

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):
    print(f"({x},{y})")

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

Uploaded Source

Built Distribution

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

Uploaded Python 2Python 3

File details

Details for the file zinglplotter-1.0.0.tar.gz.

File metadata

  • Download URL: zinglplotter-1.0.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for zinglplotter-1.0.0.tar.gz
Algorithm Hash digest
SHA256 49b6e137f2f1fdebf1c8dda3f8265aa0a1db2ca1f91eb27ebaa8929dda2a4673
MD5 9f9af7026e4f864a7e4cbcaddf9ebe06
BLAKE2b-256 57a24938988abb6da05033a00c87b97062c825d5f729b52ac862626897664a40

See more details on using hashes here.

File details

Details for the file zinglplotter-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: zinglplotter-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for zinglplotter-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ece471de6e8d6aacb7c6c55b31f8a43c41af842f4e172291d01a4d726e44b1b6
MD5 95b5c056573be82e3dbb82ef5bdec55c
BLAKE2b-256 ab4325bd09590dc20b72e53e027fccebac1665eb62e6f09242bcc443f4e4dc58

See more details on using hashes here.

Supported by

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