anchor.diff:  
     function GetLength(A,B:TKMPoint): single; overload;
     function GetLength(A,B:TKMPointF): single; overload;
  -  function GetLength(A:TKMPointF): single; overload;
     function KMLength(A,B:TKMPoint): single;
   
  -  function Normalize(var A:TKMPointF): TKMPointF;
     function Mix(A,B:TKMPointF; MixValue:single):TKMPointF; overload;
   
     procedure KMSwapPoints(var A,B:TKMPoint);
  
positive.code:   Result.Dir := Dir;
  end;
  
  function KMPointDir(X, Y:word; Dir: TKMDirection): TKMPointDir;
  begin
    Result.Loc := KMPoint(X,Y);
    Result.Dir := byte(Dir)-1;
  end;
  
  function KMPointDir(P:TKMPoint; Dir: word): TKMPointDir;
  begin
    Result.Loc := P;
    Result.Dir := Dir;
  end;
  
  function KMPointDir(P:TKMPoint; Dir: TKMDirection): TKMPointDir;
  begin
    Result.Loc := P;
    Result.Dir := byte(Dir)-1;
  end;
  
  function KMPointX1Y1(X, Y: word): TKMPoint;
  begin
    Result.X := X+1;
    Result.Y := Y+1;
  end;
  
  function KMPointX1Y1(P:TKMPoint): TKMPoint;
  begin
    Result.X := P.X+1;
    Result.Y := P.Y+1;
  end;
  
  function KMPointX1(P:TKMPoint): TKMPoint;
  begin
    Result.X := P.X+1;
    Result.Y := P.Y;
  end;
  
  function KMPointY1(P:TKMPoint): TKMPoint; overload;
  begin
    Result.X := P.X;
  
negative.code: function GetLength(A,B:TKMPointF): single; overload;
  begin
    Result := sqrt(sqr(A.x-B.x) + sqr(A.y-B.y));
  end;
  
  
  