Difference between revisions of "GroupTPAEx"
From SCAR Divi Manual
(→Availability) |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 7: | Line 7: | ||
SCAR Divi 3.28 > Current | SCAR Divi 3.28 > Current | ||
| − | *Contained a bug in | + | *Contained a bug in 3.26-3.27 that caused the initial element in every subarray of the result to be duplicated inside of that subarray. |
| − | *In | + | *In 3.26-3.27 the algorithm was implemented incorrectly and split every point of '''TPA''' up into a subarray and then included every other point within a distance of every point in that subarray. |
===Aliases=== | ===Aliases=== | ||
| − | *TPAGroupEx (SCAR Divi 3.26 > | + | *TPAGroupEx (SCAR Divi 3.26 > 3.35) |
| + | *TPAToATPAEx (SCAR Divi 3.26 > 3.35) | ||
==Description== | ==Description== | ||
Latest revision as of 11:58, 14 July 2012
Definition
function GroupTPAEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray;
Availability
SCAR Divi 3.28 > Current
- Contained a bug in 3.26-3.27 that caused the initial element in every subarray of the result to be duplicated inside of that subarray.
- In 3.26-3.27 the algorithm was implemented incorrectly and split every point of TPA up into a subarray and then included every other point within a distance of every point in that subarray.
Aliases
- TPAGroupEx (SCAR Divi 3.26 > 3.35)
- TPAToATPAEx (SCAR Divi 3.26 > 3.35)
Description
This function splits a given TPointArray TPA into separate TPointArrays, by grouping points that are within the given distance of the first point of each subarray. If a point isn't within the given distance of any first point of the subarrays, a new subarray is created containing that point as first one. The distance is given separately for the x and y components of the points in XDist and YDist. The function returns a T2DPointArray containing all the resulting TPointArrays.
Example
var
TPA: TPointArray;
ATPA: T2DPointArray;
i: Integer;
begin
ClearDebug;
TPA := [Point(2, 5), Point(6, 9), Point(0, 0), Point(5, 5), Point(1, 1), Point(5, 7), Point(-2, 0)];
ATPA := GroupTPAEx(TPA, 2, 1);
for i := 0 to High(ATPA) do
WriteLn(TPAToStr(ATPA[i]));
end.Output:
(2,5) (6,9) (0,0);(1,1);(-2,0) (5,5) (5,7)