ESBDistance Function
Returns the straight line Distance between (X1, Y1) and (X2, Y2)

Unit
QESBPCSMath

Declaration
Function ESBDistance(const X1, Y1, X2, Y2: Extended): Extended;

Description
Rather than the "traditional" algebraic solution, we use a method that improved accuracy, especially when either A or C or both are much closer to zero than B, then the discriminant is nearly equal to B and one of the calculations will involve the subtraction of two nearly equal quantities. Thanks to Rory Daulton for this improvement.

Implementation

function ESBDistance (const X1, Y1, X2, Y2: Extended): Extended;
{ Rory Daulton suggested this more tolerant routine }
var
     X, Y: Extended;
begin
     X := Abs (X1 - X2);
     Y := Abs (Y1 - Y2);
     if X > Y then
          Result := X * Sqrt (1 + Sqr (Y / X))
     else if Y <> 0 then
          Result := Y * Sqrt (1 + Sqr (X / Y))
     else
          Result := 0
End;


HTML generated by Time2HELP
http://www.time2help.com