Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Bresenham's line algorithm
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Similar algorithms== The Bresenham algorithm can be interpreted as slightly modified [[Digital differential analyzer (graphics algorithm)|digital differential analyzer]] (using 0.5 as error threshold instead of 0, which is required for non-overlapping polygon rasterizing). The principle of using an [[incremental error algorithm|incremental error]] in place of division operations has other applications in graphics. It is possible to use this technique to calculate the [[uv mapping|U,V co-ordinates]] during raster scan of texture mapped polygons.<ref>{{Cite patent|title=Apparatus and method for performing perspectively correct interpolation in computer graphics|country=US|number=5739818|inventor1-first=John Neil|inventor1-last=Spackman|assign=[[Canon_Inc.|Canon KK]]|pubdate=1998-04-14}}</ref> The [[voxel]] heightmap software-rendering engines seen in some PC games also used this principle. Bresenham also published a Run-Slice computational algorithm: while the above described Run-Length algorithm runs the loop on the major axis, the Run-Slice variation loops the other way.<ref>{{cite web |title=Michael Abrash's Graphics Programming Black Book Special Edition: The Good, the Bad, and the Run-Sliced |url=http://www.phatcode.net/res/224/files/html/ch36/36-01.html |website=www.phatcode.net |access-date=13 February 2024}}; </ref> This method has been represented in a number of US patents: * {{US patent reference |number={{formatnum:5,815,163|R}} |title=Method and apparatus to draw line slices during calculation }} * {{US patent reference |number={{formatnum:5,740,345|R}} |title=Method and apparatus for displaying computer graphics data stored in a compressed format with an efficient color indexing system }} * {{US patent reference |number={{formatnum:5,657,435|R}} |title=Run slice line draw engine with non-linear scaling capabilities }} * {{US patent reference |number={{formatnum:5,627,957|R}} |title=Run slice line draw engine with enhanced processing capabilities }} * {{US patent reference |number={{formatnum:5,627,956|R}} |title=Run slice line draw engine with stretching capabilities }} * {{US patent reference |number={{formatnum:5,617,524|R}} |title=Run slice line draw engine with shading capabilities }} * {{US patent reference |number={{formatnum:5,611,029|R}} |title=Run slice line draw engine with non-linear shading capabilities }} * {{US patent reference |number={{formatnum:5,604,852|R}} |title=Method and apparatus for displaying a parametric curve on a video display }} * {{US patent reference |number={{formatnum:5,600,769|R}} |title=Run slice line draw engine with enhanced clipping techniques }} The algorithm has been extended to: * Draw lines of arbitrary thickness, an algorithm created by Alan Murphy at IBM.<ref>{{Cite web|url=http://homepages.enterprise.net/murphy/thickline/index.html|title=Murphy's Modified Bresenham Line Algorithm|website=homepages.enterprise.net|access-date=2018-06-09}} ('Line Thickening by Modification to Bresenham's Algorithm' in the IBM Technical Disclosure Bulletin Vol. 20 No. 12 May 1978 pages 5358-5366.)</ref> * Draw multiple kinds curves (circles, ellipses, cubic, quadratic, and rational [[Bézier curve]]s) and antialiased lines and curves; a set of algorithms by Alois Zingl.<ref name=Zingl>{{cite report|last=Zingl|first=Alois|title=A Rasterizing Algorithm for Drawing Curves|date=2016|orig-date=Previously published in 2012|url=https://zingl.github.io/Bresenham.pdf}}<br>HTML abstract and demo: {{cite web|date=2020|orig-date=Previously published in 2012|last=Zingl|first=Alois|title=The Beauty of Bresenham's Algorithm|url=https://zingl.github.io/bresenham.html|website=zingl.github.io}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)