Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function TPAInDistanceWithPt(TPA: TPointArray; p: TPoint; dist: Integer): Boolean;
- var
- h, i: Integer;
- begin
- h := High(TPA);
- if ((h > -1) and (dist >= 0)) then
- for i := 0 to h do
- begin
- Result := (Distance(TPA[i].X, TPA[i].Y, p.X, p.Y) <= dist);
- if Result then
- Break;
- end;
- end;
- function TPAInDistanceWithPt2(TPA: TPointArray; p: TPoint; minDist, maxDist: Integer): Boolean;
- var
- h, i: Integer;
- begin
- h := High(TPA);
- if ((h > -1) and (minDist >= 0) and (minDist <= maxDist)) then
- for i := 0 to h do
- begin
- 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));
- if Result then
- Break;
- end;
- end;
- var
- ds: TIntArray;
- d, h, i, t: Integer;
- TPA: TPointArray;
- begin
- ClearDebug;
- TPA := TPAFromBox(Box(16, 151, 500, 365));
- d := Distance(0, 0, TPA[0].X, TPA[0].Y);
- ds := [(d - 2), (d - 1), d, (d + 1), (d + 2)];
- h := High(ds);
- WriteLn('TPAInDistanceWithPt:');
- for i := 0 to h do
- begin
- t := GetSystemTime;
- if TPAInDistanceWithPt(TPA, Point(0, 0), ds[i]) then
- WriteLn('ds[' + IntToStr(i) + '] - YES! (' + IntToStr(GetSystemTime - t) + ' ms.)')
- else
- WriteLn('ds[' + IntToStr(i) + '] - NO. (' + IntToStr(GetSystemTime - t) + ' ms.)');
- end;
- WriteLn('TPAInDistanceWithPt2:');
- for i := 0 to h do
- begin
- t := GetSystemTime;
- if TPAInDistanceWithPt2(TPA, Point(0, 0), (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(TPA, 0);
- SetLength(ds, 0);
- end.
Advertisement
Add Comment
Please, Sign In to add comment