Janilabo

TPAInDistanceWithTPA(2)

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