Difference between revisions of "GroupTPA"

From SCAR Divi Manual
Jump to: navigation, search
Line 8: Line 8:
  
 
*Contained a bug in SCAR Divi 3.26 - SCAR Divi 3.27 that caused the initial element in every subarray of the result to be duplicated inside of that subarray.
 
*Contained a bug in SCAR Divi 3.26 - SCAR Divi 3.27 that caused the initial element in every subarray of the result to be duplicated inside of that subarray.
*In SCAR Divi 3.26 - SCAR Divi 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.
+
*In SCAR Divi 3.26 - SCAR Divi 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 the first point in that subarray.
  
 
===Aliases===
 
===Aliases===

Revision as of 19:08, 2 November 2011

Definition

function GroupTPA(const TPA: TPointArray; const Dist: Integer): T2DPointArray;

Availability

SCAR Divi 3.28 > Current

  • Contained a bug in SCAR Divi 3.26 - SCAR Divi 3.27 that caused the initial element in every subarray of the result to be duplicated inside of that subarray.
  • In SCAR Divi 3.26 - SCAR Divi 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 the first point in that subarray.

Aliases

  • TPAGroup (SCAR Divi 3.26 > Current)

Description

This function splits a given TPointArray TPA into separate TPointArrays, by grouping points that are within the given distance Dist 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.

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 := GroupTPA(TPA, 2);
  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)

See Also