3
$\begingroup$

If so, I cannot find any examples of this.

Edit: By "used", I mean are they still used in rendering in games or whatever. I haven't seen it used anywhere except in MS Paint because Wu's algorithm looks way better (yet is still not expensive as far as I know).

$\endgroup$
7
  • $\begingroup$ Bresenham's algorithm was originally developed for plotters. Have you looked into the CNC or 3D printing field? $\endgroup$
    – Pseudonym
    Commented Oct 22, 2015 at 7:09
  • $\begingroup$ I haven't looked into those. I would prefer to not write too much semi on topic stuff though. How important are they? If they use a pen rather than pixels then why does Brensenham's algo need to be used for it? $\endgroup$ Commented Oct 22, 2015 at 7:27
  • $\begingroup$ What research have you done? Where have you looked? Have you spent some time on Google Scholar, looking for recent papers that mention Bresenham's algorithm? $\endgroup$
    – D.W.
    Commented Oct 22, 2015 at 23:12
  • $\begingroup$ I've googled to try find stuff, but not really successful. Im not even at university yet I'm writing this for a high school report but I'll give Google Scholar a shot but so far I can't find anything on there. And why do plotters need bresenham's algorithm when they don't use pixels? $\endgroup$ Commented Oct 26, 2015 at 8:36
  • $\begingroup$ @Dylanthepiguy Have you checked out Bresenham's original paper, perhaps he gives the reason himself? $\endgroup$ Commented Oct 26, 2015 at 8:43

2 Answers 2

4
$\begingroup$

Google Scholar reports hundreds of mentions since 2012.

Specifically, the patents

explicitly mention the algorithm, if only in exemplary fashion.

Further searches, e.g. on YouTube, suggest persisting interest in the algorithm; it still seems to be in the mainstream.

That does, of course, not mean that there are no better ones, or that professional products use it still. But since proprietary devices are usually closed-source, we won't be able to answer that question with confidence.

$\endgroup$
1
  • 1
    $\begingroup$ Do you have a reference? If so, please post another answer! (I only did some googling to make this question answered.) $\endgroup$
    – Raphael
    Commented Apr 16, 2016 at 18:29
1
$\begingroup$

This ia a bit like comparing apples and oranges.
Good written Bresenham algorithm works like Wu algorithm without antialiasing. It can be used to draw lines, ellipses and circles with very high speed using only integer arithmetic.
Among all line rasterizers Bresenham is the fastest (DDA, naive, etc.).

There are different purposes - Wu is used to draw plausible looking not jagged lines, Bresenham is used to ensure fast continous lines. Apart of taking part where only outline might be antialiased, there is no point in doing so on the inside of thick geometric primitive. Moreover good implementation of Wu algorithm also uses special cases to handle all inputs.

In the case of variable thick line there is Murphys modification built on top of Bresenham algorithm.

2D libraries use internaly Bresenham algorithm and Wu giving chance to choose (some kind of antialiasing flag). Even OpenGL/WebGL without flags produced Bresenham line (I haven't checked internals, just matched the output). Simple GDI and Java used it internally (new versions might use something different).

But there is more than that. There are situations where you have discrete points (like from mouse events) and want to get continous path - there is no use in antialiasing.

Practical algorithms like RoadMap (there is only mention that Bresenham is used for connectivity check) or moving on discrete lattice, like configuration space for robots, CNC represents obstacles or material to be milled as pixels/voxels - there is no need for antialiasing but one must be sure that no obstacle was hit - this is where continous and fast properties of Bresenham are used.

Summing it up, there are lots of algorithms that depend on Bresenham, use it internally or are just modified versions of it.
Depending on usage, not always antialiasing is needed, so using Wu as better is just waste of resources.

If some references are needed beyond what Raphael provided (he already made it clear) I will update some links upon encounter.

$\endgroup$
1
  • $\begingroup$ To avoid continous edits, I add it here for now. GD library uses Bresenham algorithm internally. I have to dig deeper, but it seems that new Java internals are on floats/doubles, so there might be some change, to be investigated. $\endgroup$
    – Evil
    Commented Apr 19, 2016 at 18:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.