Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function CleanAndSortTPA(TPA: TPointArray): TPointArray;
- var
- Matrix: array of TBoolArray;
- i, c, H, j, idx, x, y: Integer;
- area: TBox;
- begin
- area := GetTPABounds(TPA);
- H := High(TPA);
- SetLength(Matrix, ((area.Y2 - area.Y1) + 1));
- for i := 0 to (area.Y2 - area.Y1) do
- SetLength(Matrix[i], ((area.X2 - area.X1) + 1));
- C := 0;
- for i :=0 to H do
- begin
- if Matrix[(TPA[i].y - area.X1)][(TPA[i].x - area.Y1)] then
- Continue;
- Matrix[(TPA[i].y - area.X1)][(TPA[i].x - area.Y1)] := True;
- Inc(C);
- end;
- SetLength(Result, C);
- idx := 0;
- for x := area.X1 to area.X2 do
- for y := area.Y1 to area.Y2 do
- if Matrix[(y - area.X1)][(x - area.Y1)] then
- begin
- Result[idx] := Point(x, y);
- Inc(idx);
- if (idx >= C) then
- Exit;
- end;
- end;
- function RandomTPA(Amount:Integer; MinX,MinY,MaxX,MaxY:Integer): TPointArray;
- var i:Integer;
- begin
- SetLength(Result, Amount+1);
- for i:=0 to Amount do
- begin
- Result[i] := Point(RandomRange(MinX, MaxX), RandomRange(MinY, MaxY));
- end;
- end;
- var
- a, b: TPointArray;
- begin
- b := RandomTPA(10, -2, -2, 2, 2);
- WriteLn('BEFORE: ' + ToStr(b));
- a := CleanAndSortTPA(b);
- WriteLn('AFTER: ' + ToStr(a));
- end.
Advertisement
Add Comment
Please, Sign In to add comment