Make a 2D mesh object

## Usage

```
fm_mesh_2d(...)
fm_mesh_2d_inla(
loc = NULL,
loc.domain = NULL,
offset = NULL,
n = NULL,
boundary = NULL,
interior = NULL,
max.edge = NULL,
min.angle = NULL,
cutoff = 1e-12,
max.n.strict = NULL,
max.n = NULL,
plot.delay = NULL,
crs = NULL,
...
)
```

## Arguments

- ...
Currently passed on to

`fm_mesh_2d_inla`

- loc
Matrix of point locations to be used as initial triangulation nodes. Can alternatively be a

`sf`

,`sfc`

,`SpatialPoints`

or`SpatialPointsDataFrame`

object.- loc.domain
Matrix of point locations used to determine the domain extent. Can alternatively be a

`SpatialPoints`

or`SpatialPointsDataFrame`

object.- offset
The automatic extension distance. One or two values, for an inner and an optional outer extension. If negative, interpreted as a factor relative to the approximate data diameter (default=-0.10???)

- n
The number of initial nodes in the automatic extensions (default=16)

- boundary
one or more (as list) of

`fm_segm()`

objects, or objects supported by`fm_as_segm()`

- interior
one object supported by

`fm_as_segm()`

- max.edge
The largest allowed triangle edge length. One or two values.

- min.angle
The smallest allowed triangle angle. One or two values. (Default=21)

- 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.

- max.n.strict
The maximum number of vertices allowed, overriding

`min.angle`

and`max.edge`

(default=-1, meaning no limit). One or two values, where the second value gives the number of additional vertices allowed for the extension.- max.n
The maximum number of vertices allowed, overriding

`max.edge`

only (default=-1, meaning no limit). One or two values, where the second value gives the number of additional vertices allowed for the extension.- plot.delay
If logical

`TRUE`

or a negative numeric value, activates displaying the result after each step of the multi-step domain extension algorithm.- crs

## Functions

`fm_mesh_2d_inla()`

: Legacy method for`INLA::inla.mesh.2d()`

Create a triangle mesh based on initial point locations, specified or automatic boundaries, and mesh quality parameters.

## 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.

## See also

`fm_rcdt_2d()`

, `fm_mesh_2d()`

, `fm_delaunay_2d()`

,
`fm_nonconvex_hull()`

, `fm_extensions()`

, `fm_refine()`

Other object creation and conversion:
`fm_as_fm()`

,
`fm_as_lattice_2d()`

,
`fm_as_mesh_1d()`

,
`fm_as_mesh_2d()`

,
`fm_as_segm()`

,
`fm_as_sfc()`

,
`fm_as_tensor()`

,
`fm_lattice_2d()`

,
`fm_mesh_1d()`

,
`fm_segm()`

,
`fm_simplify()`

,
`fm_tensor()`

## Author

Finn Lindgren finn.lindgren@gmail.com

## Examples

```
fm_mesh_2d_inla(boundary = fm_extensions(cbind(2, 1), convex = 1, 2))
#> fm_mesh_2d object:
#> Manifold: R2
#> V / E / T: 17 / 32 / 16
#> Euler char.: 1
#> Constraints: 16 boundary edges (1 group: 1), 0 boundary edges
#> Bounding box: (1.000151,2.999849) x (0.0001506077,1.9998493923)
#> Basis d.o.f.: 17
```