Janilabo

Janilabo | TPAInDistanceWithPt(2)

Nov 4th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.80 KB | None | 0 0
  1. function TPAInDistanceWithPt(TPA: TPointArray; p: TPoint; dist: Integer): Boolean;
  2. var
  3.   h, i: Integer;
  4. begin
  5.   h := High(TPA);  
  6.   if ((h > -1) and (dist >= 0)) then
  7.     for i := 0 to h do
  8.     begin      
  9.       Result := (Distance(TPA[i].X, TPA[i].Y, p.X, p.Y) <= dist);
  10.       if Result then
  11.         Break;
  12.     end;
  13. end;
  14.  
  15. function TPAInDistanceWithPt2(TPA: TPointArray; p: TPoint; minDist, maxDist: Integer): Boolean;
  16. var
  17.   h, i: Integer;
  18. begin
  19.   h := High(TPA);  
  20.   if ((h > -1) and (minDist >= 0) and (minDist <= maxDist)) then
  21.     for i := 0 to h do
  22.     begin      
  23.       Result := ((Distance(TPA[i].X, TPA[i].Y, p.X, p.Y) >= minDist) and (Distance(TPA[i].X, TPA[i].Y, p.X, p.Y) <= maxDist));
  24.       if Result then
  25.         Break;
  26.     end;
  27. end;
  28.  
  29. var
  30.   ds: TIntArray;
  31.   d, h, i, t: Integer;
  32.   TPA: TPointArray;
  33.  
  34. begin
  35.   ClearDebug;
  36.   TPA := TPAFromBox(Box(16, 151, 500, 365));  
  37.   d := Distance(0, 0, TPA[0].X, TPA[0].Y);                    
  38.   ds := [(d - 2), (d - 1), d, (d + 1), (d + 2)];
  39.   h := High(ds);      
  40.   WriteLn('TPAInDistanceWithPt:');
  41.   for i := 0 to h do  
  42.   begin  
  43.     t := GetSystemTime;
  44.     if TPAInDistanceWithPt(TPA, Point(0, 0), ds[i]) then
  45.       WriteLn('ds[' + IntToStr(i) + '] - YES! (' + IntToStr(GetSystemTime - t) + ' ms.)')
  46.     else
  47.       WriteLn('ds[' + IntToStr(i) + '] - NO. (' + IntToStr(GetSystemTime - t) + ' ms.)');  
  48.   end;  
  49.   WriteLn('TPAInDistanceWithPt2:');
  50.   for i := 0 to h do  
  51.   begin  
  52.     t := GetSystemTime;
  53.     if TPAInDistanceWithPt2(TPA, Point(0, 0), (ds[i] - 3), (ds[i] - 1)) then
  54.       WriteLn('ds[' + IntToStr(i) + '] - YES! (' + IntToStr(GetSystemTime - t) + ' ms.)')
  55.     else
  56.       WriteLn('ds[' + IntToStr(i) + '] - NO. (' + IntToStr(GetSystemTime - t) + ' ms.)');  
  57.   end;
  58.   SetLength(TPA, 0);  
  59.   SetLength(ds, 0);
  60. end.
Advertisement
Add Comment
Please, Sign In to add comment