RamerDouglasPeucker

function RamerDouglasPeucker(const path: TArrayOfPointD; epsilon: double): TArrayOfPointD; overload;

function RamerDouglasPeucker(const path: TArrayOfArrayOfPointD; epsilon: double): TArrayOfArrayOfPointD; overload;


A line simplification algorithm that removes extraneous vertices.

The algorithm recursively finds the vertex between line endpoints that's furthest from the virtual segment joining these endpoints, If this vertex is within a predefined (epsilon) distance, then all vertices between endpoints will be removed. Otherwise the line is divided into two at this vertex and the process is repeated. See Wikipedia

Simplification is especially useful when vectorizing raster images and this function is demonstrated in the VectorizeImage example.

See Also

Vectorize, SmoothToBezier