Identify knot intervals or triangles and compute barycentric coordinates
fm_bary(...)# S3 method for fm_bary
fm_bary(bary, ..., extra_class = NULL)
# S3 method for list
fm_bary(bary, ..., extra_class = NULL)
# S3 method for tbl_df
fm_bary(bary, ..., extra_class = NULL)
# S3 method for fm_mesh_1d
fm_bary(mesh, loc, method = c("linear", "nearest"), restricted = FALSE, ...)
# S3 method for fm_mesh_2d
fm_bary(mesh, loc, crs = NULL, ..., max_batch_size = NULL)
# S3 method for fm_mesh_3d
fm_bary(mesh, loc, ..., max_batch_size = NULL)
# S3 method for fm_lattice_2d
fm_bary(mesh, loc, crs = NULL, ...)
# S3 method for fm_lattice_Nd
fm_bary(mesh, loc, ...)
A fm_bary object, a tibble with columns index; either
vector of triangle indices (triangle meshes),
vector of knot indices (1D meshes, either for edges or individual knots), or
vector of lower left box indices (2D lattices),
and where, a matrix of barycentric coordinates.
Arguments forwarded to sub-methods.
An fm_bary object, or an object that can be converted to
fm_bary.
character; If non-NULL and not already in the class
vector of bary, add it to the front of the class vector.
fm_mesh_1d or fm_mesh_2d object
Points for which to identify the containing interval/triangle, and
corresponding barycentric coordinates. May be a vector (for 1d) or a matrix
of raw coordinates, sf, or sp point information (for 2d).
character; method for defining the barycentric coordinates, "linear" (default) or "nearest"
logical, used for method="linear".
If FALSE (default), points outside the mesh interval will be given
barycentric weights less than 0 and greater than 1, according to linear
extrapolation. If TRUE, the barycentric weights are clamped to the (0, 1)
interval.
Optional crs information for loc
integer; maximum number of points to process in a
single batch. This speeds up calculations by avoiding repeated large
internal memory allocations and data copies. The default, NULL, uses
max_batch_size = 2e5L, chosen based on empirical time measurements to
give an approximately optimal runtime.
fm_bary(fm_bary): Returns the bary input unchanged
fm_bary(list): Converts a list bary to fm_bary.
In the list elements are unnamed, the names index and where are assumed.
fm_bary(tbl_df): Converts a tibble::tibble() bary to fm_bary
fm_bary(fm_mesh_1d): Return an fm_bary object with elements index
(edge index vector pointing to the first knot of each edge) and
where (barycentric coordinates,
2-column matrices). Use fm_bary_simplex() to obtain the corresponding
endpoint knot indices.
For method = "nearest", index contains the index of the nearest mesh
knot, and where is a single-column all-ones matrix.
fm_bary(fm_mesh_2d): An fm_bary object with columns index (vector of
triangle indices) and where (3-column matrix of barycentric coordinates).
Points that were not found give NA entries in index and where.
fm_bary(fm_mesh_3d): An fm_bary object with columns index (vector of
triangle indices) and where (4-column matrix of barycentric coordinates).
Points that were not found give NA entries in index and where.
fm_bary(fm_lattice_2d): An fm_bary object with columns index (vector of
lattice cell indices) and where (4-column matrix of barycentric
coordinates). Points that are outside the lattice are given NA entries in
index and where.
fm_bary(fm_lattice_Nd): An fm_bary object with columns index (vector of
lattice cell indices) and where 2^d-column matrix of barycentric
coordinates). Points that are outside the lattice are given NA entries in
index and where.
fm_bary_simplex(), fm_bary_loc()
bary <- fm_bary(fm_mesh_1d(1:4), seq(0, 5, by = 0.5))
bary
str(fm_bary(fmexample$mesh, fmexample$loc_sf))
m <- fm_mesh_3d(
rbind(
c(1, 0, 0),
c(0, 1, 0),
c(0, 0, 1),
c(0, 0, 0)
),
matrix(c(1, 2, 3, 4), 1, 4)
)
b <- fm_bary(m, matrix(c(1, 1, 1) / 4, 1, 3))
str(fm_bary(fmexample$mesh, fmexample$loc_sf))
Run the code above in your browser using DataLab