Skip to contents

Computes a refined constrained Delaunay triangulation on R2 or S2.

Usage

fm_rcdt_2d(...)

fm_rcdt_2d_inla(
  loc = NULL,
  tv = NULL,
  boundary = NULL,
  interior = NULL,
  extend = (missing(tv) || is.null(tv)),
  refine = FALSE,
  lattice = NULL,
  globe = NULL,
  cutoff = 1e-12,
  quality.spec = NULL,
  crs = NULL,
  ...
)

fm_delaunay_2d(loc, crs = NULL, ...)

Arguments

...

Currently passed on to fm_mesh_2d_inla or converted to fmesher_rcdt() options.

loc

Input coordinates that should be part of the mesh. Can be a matrix, sf, sfc, SpatialPoints, or other object supported by fm_unify_coords().

tv

Initial triangulation, as a N-by-3 index vector into loc

boundary, interior

Objects supported by fm_as_segm(). If boundary is numeric, fm_nonconvex_hull(loc, convex = boundary) is used.

extend

logical or list specifying whether to extend the data region, with parameters

list("n")

the number of edges in the extended boundary (default=16)

list("offset")

the extension distance. If negative, interpreted as a factor relative to the approximate data diameter (default=-0.10)

Setting to FALSE is only useful in combination lattice or boundary.

refine

logical or list specifying whether to refine the triangulation, with parameters

list("min.angle")

the minimum allowed interior angle in any triangle. The algorithm is guaranteed to converge for min.angle at most 21 (default=21)

list("max.edge")

the maximum allowed edge length in any triangle. If negative, interpreted as a relative factor in an ad hoc formula depending on the data density (default=Inf)

list("max.n.strict")

the maximum number of vertices allowed, overriding min.angle and max.edge (default=-1, meaning no limit)

list("max.n")

the maximum number of vertices allowed, overriding max.edge only (default=-1, meaning no limit)

lattice

An fm_lattice_2d object, generated by fm_lattice_2d(), specifying points on a regular lattice.

globe

If non-NULL, an integer specifying the level of subdivision for global mesh points, used with fmesher_globe_points()

cutoff

The minimum allowed distance between points. Point at most as far apart as this are replaced by a single vertex prior to the mesh refinement step.

quality.spec

List of vectors of per vertex max.edge target specification for each location in loc, boundary/interior (segm), and lattice. Only used if refining the mesh.

crs

Optional crs object

Value

An fm_mesh_2d object

Functions

  • fm_rcdt_2d_inla(): Legacy method for the INLA::inla.mesh.create() interface

  • fm_delaunay_2d(): Construct a plain Delaunay triangulation.

INLA compatibility

For mesh and curve creation, the fm_rcdt_2d_inla(), fm_mesh_2d_inla(), and fm_nonconvex_hull_inla() methods will keep the interface syntax used by INLA::inla.mesh.create(), INLA::inla.mesh.2d(), and INLA::inla.nonconvex.hull() functions, respectively, whereas the fm_rcdt_2d(), fm_mesh_2d(), and fm_nonconvex_hull() interfaces may be different, and potentially change in the future.

Examples

(m <- fm_rcdt_2d_inla(
  boundary = fm_nonconvex_hull(cbind(0, 0), convex = 5)
))
#> fm_mesh_2d object:
#>   Manifold:	R2
#>   V / E / T:	16 / 29 / 14
#>   Euler char.:	1
#>   Constraints:	16 boundary edges (1 group: 1), 0 boundary edges
#>   Bounding box: (-4.999623, 4.999623) x (-4.999623, 4.999623)
#>   Basis d.o.f.:	16

fm_delaunay_2d(matrix(rnorm(30), 15, 2))
#> fm_mesh_2d object:
#>   Manifold:	R2
#>   V / E / T:	15 / 35 / 21
#>   Euler char.:	1
#>   Constraints:	7 boundary edges (1 group: 1), 0 boundary edges
#>   Bounding box: (-1.116393, 1.654247) x (-1.706687, 3.480540)
#>   Basis d.o.f.:	15