Solved

Fastest Bresenham algorithm

Posted on 2002-03-13
4
1,160 Views
Last Modified: 2008-02-01
Hi Experts,

I've read one in a book, there is the most fastest line algorithm founded by two university guys, I don't remember the name but their algorithm is based on improved Bresenham.

So please can someone create a line function which I can simply use based on that fastest improved Bresenham ?

for example a function like this :

function Line(x1, y1, x2, y2: integer)

So I can simply use that on my program thanks alot experts... you are all always great on helping student like me :)
0
Comment
Question by:comicboy
  • 2
4 Comments
 
LVL 11

Expert Comment

by:robert_marquardt
ID: 6860615
I searched on Google with "improved Bresenham2 and found this http://www.cs.unc.edu/~davemc/Class/136/Lecture9/Lines.html
The source is in C, but conversion should be easy.
0
 

Accepted Solution

by:
Rabster earned 50 total points
ID: 6860994
A guy called G. Hoffman has adapted a routine from C based on an algorithm from a Kenny Hoff. This is an improved version of Bresenham's algorithm:

Procedure MakeBLine(p0,q0,p1,q1, pal,col : Byte);
var
  x,y,dx,dy,
  adx,ady,
  ix,iy,du,
  dr,pp,cp,
  i : Integer;
Begin
  dx := p1-p0;
  dy := q1-q0;
  adx := Abs(dx);
  ady := Abs(dy);
  x := p0;
  y := q0;
  cp := 0;
  If dx > 0 then
  ix:= 1
  else
  begin
    ix := -1;
    cp := -1;
  end;
  if dy > 0 then
  iy := 1
  else
  iy := -1;
  If adx >= ady then
  begin
    dr := 2 * ady;
    du := dr-2*adx;
    pp := dr-adx;
    For i := 0 to adx do
    begin
      {SpcSixel(x,y,pal,col);  }
      x:= x + ix;
      If pp > cp then
      begin
        y := y + iy;
        pp := pp + du;
      end
      else
      pp := pp + dr;
    end;
  end
  else
  begin
    dr := 2*adx;
    du := dr -2* ady;
    pp := dr-ady;
    For i := 0 to ady do
    begin
      {SpcSixel(x,y,pal,col); }
      y := y + iy;
      If pp > cp then
      begin
        x := x + ix;
        pp := pp + du;
      end
      else
      pp := pp + dr;
    end;
  end;
end;
0
 

Author Comment

by:comicboy
ID: 6864104
Well thanks, Robert and Rabster, now my turn to try your code...
0
 

Author Comment

by:comicboy
ID: 6920718
Sorry for long delay, my Delphi disc broken but now it's up again, I've tried your code...

Excellent!!! it's working as best and as fast as I need

Thanks :)
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question