Solved

Fastest Bresenham algorithm

Posted on 2002-03-13
4
1,143 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
Comment Utility
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
Comment Utility
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
Comment Utility
Well thanks, Robert and Rabster, now my turn to try your code...
0
 

Author Comment

by:comicboy
Comment Utility
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

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

763 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now