Ramer-Douglas-Peucker line simplification: Difference between revisions

m
C - fixed spelling errors
(Added Rust solution)
m (C - fixed spelling errors)
Line 39:
// Simplify an array of points using the Ramer–Douglas–Peucker algorithm.
// Returns the number of output points.
size_t douglas_pueckerdouglas_peucker(const point_t* points, size_t n, double epsilon,
point_t* dest, size_t destlen) {
assert(n >= 2);
Line 53:
}
if (max_dist > epsilon) {
size_t n1 = douglas_pueckerdouglas_peucker(points, index + 1, epsilon, dest, destlen);
if (destlen >= n1 - 1) {
destlen -= n1 - 1;
Line 60:
destlen = 0;
}
size_t n2 = douglas_pueckerdouglas_peucker(points + index, n - index, epsilon, dest, destlen);
return n1 + n2 - 1;
}
Line 86:
const size_t len = sizeof(points)/sizeof(points[0]);
point_t out[len];
size_t n = douglas_pueckerdouglas_peucker(points, len, 1.0, out, len);
print_points(out, n);
return 0;
1,777

edits