fm_simplify_helper {fmesher} | R Documentation |
Recursive curve simplification.
Description
Helper from legacy INLA::inla.simplify.curve()
Attempts to simplify a polygonal curve by joining nearly colinear segments.
Uses a variation of the binary splitting Ramer-Douglas-Peucker algorithm,
with an ellipse of half-width eps
ellipse instead of a rectangle, motivated
by prediction ellipse for Brownian bridge.
Usage
fm_simplify_helper(loc, idx, eps = NULL, eps_rel = NULL)
Arguments
loc |
Coordinate matrix. |
idx |
Index vector into |
eps |
Absolute straightness tolerance. Default |
eps_rel |
Relative straightness tolerance. Default |
Details
Variation of Ramer-Douglas-Peucker. Uses width epsilon ellipse instead of rectangle, motivated by prediction ellipse for Brownian bridge.
Value
An index vector into loc
specifying the simplified polygonal
curve.
Author(s)
Finn Lindgren Finn.Lindgren@gmail.com
See Also
Other nonconvex inla legacy support:
fm_nonconvex_hull_inla()
,
fm_segm_contour_helper()
Examples
theta <- seq(0, 2 * pi, length.out = 1000)
loc <- cbind(cos(theta), sin(theta))
idx <- fm_simplify_helper(loc = loc, idx = 1:nrow(loc), eps = 0.01)
print(c(nrow(loc), length(idx)))
plot(loc, type = "l")
lines(loc[idx, ], col = "red")