Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function TPAInDistanceWithTPA(TPA1, TPA2: TPointArray; dist: Integer): Boolean;
- var
- h1, i1, h2, i2: Integer;
- begin
- h1 := High(TPA1);
- h2 := High(TPA2);
- if ((h1 > -1) and (h2 > -1) and (dist >= 0)) then
- for i1 := 0 to h1 do
- for i2 := 0 to h2 do
- begin
- Result := (dist >= Distance(TPA1[i1].X, TPA1[i1].Y, TPA2[i2].X, TPA2[i2].Y));
- if Result then
- Break;
- end;
- end;
- function TPAInDistanceWithTPA2(TPA1, TPA2: TPointArray; minDist, maxDist: Integer): Boolean;
- var
- d, h1, i1, h2, i2: Integer;
- begin
- h1 := High(TPA1);
- h2 := High(TPA2);
- if ((h1 > -1) and (h2 > -1) and (minDist >= 0) and (minDist <= maxDist)) then
- for i1 := 0 to h1 do
- for i2 := 0 to h2 do
- begin
- d := Distance(TPA1[i1].X, TPA1[i1].Y, TPA2[i2].X, TPA2[i2].Y);
- Result := ((d >= minDist) and (d <= maxDist));
- if Result then
- Break;
- end;
- end;
- var
- ds: TIntArray;
- d, h, i, t: Integer;
- TPA1, TPA2: TPointArray;
- begin
- ClearDebug;
- TPA1 := TPAFromBox(Box(16, 151, 20, 153));
- TPA2 := TPAFromBox(Box(0, 0, 15, 15));
- d := Distance(14, 14, 16, 152);
- ds := [(d - 2), (d - 1), d, (d + 1), (d + 2)];
- h := High(ds);
- WriteLn('TPAInDistanceWithTPA:');
- for i := 0 to h do
- begin
- t := GetSystemTime;
- if TPAInDistanceWithTPA(TPA1, TPA2, ds[i]) then
- WriteLn('ds[' + IntToStr(i) + '] - YES! (' + IntToStr(GetSystemTime - t) + ' ms.)')
- else
- WriteLn('ds[' + IntToStr(i) + '] - NO. (' + IntToStr(GetSystemTime - t) + ' ms.)');
- end;
- WriteLn('TPAInDistanceWithTPA2:');
- for i := 0 to h do
- begin
- t := GetSystemTime;
- if TPAInDistanceWithTPA2(TPA1, TPA2, (ds[i] - 3), (ds[i] - 1)) then
- WriteLn('ds[' + IntToStr(i) + '] - YES! (' + IntToStr(GetSystemTime - t) + ' ms.)')
- else
- WriteLn('ds[' + IntToStr(i) + '] - NO. (' + IntToStr(GetSystemTime - t) + ' ms.)');
- end;
- SetLength(TPA1, 0);
- SetLength(TPA2, 0);
- SetLength(ds, 0);
- end.
Advertisement
Add Comment
Please, Sign In to add comment