This structural-form Delaunay-based triangulation model is analogous to the TRI() model in the silicate package and formally extends the class of that model. A primitives-based shape-constrained triangulation. The Delaunay model is the mostly Delaunay scheme used by the provable-quality meshers.
DEL0(x, ..., max_area = NULL) # S3 method for DEL DEL0(x, ..., max_area = NULL) # S3 method for default DEL0(x, ..., max_area = NULL) # S3 method for SC DEL0(x, ..., max_area = NULL) # S3 method for SC0 DEL0(x, ..., max_area = NULL) # S3 method for TRI DEL0(x, ..., max_area = NULL) # S3 method for TRI0 DEL0(x, ..., max_area = NULL) # S3 method for ARC DEL0(x, ..., max_area = NULL) # S3 method for PATH DEL0(x, ..., max_area = NULL) # S3 method for PATH0 DEL0(x, ..., max_area = NULL) # S3 method for BasicRaster DEL0(x, ..., max_triangles = NULL)
x | |
---|---|
... | ignored |
max_area | the maximum area of a triangle |
max_triangles | limit on triangles to create, passed to terrainmeshr |
DEL0 class
This is a more compact form of the relational-form DEL()
model.
Note that for explicitly linear features, these still use a post-meshing identification for which triangles belong in which feature. This can't make sense for many line layers, but we leave it for now.
For point features, the mesher unproblematically creates a triangulation in
the convex hull of the points, any attributes names z_
, m_
, or t_
are
automatically interpolated and include in the output. See the help for
RTriangle::triangulate()
for how this works via the $PA
element.
Note that for a raster input the terrainmeshr package is used to determine
a sensible number of triangles based on local curvature. To avoid creating
this adative mesh and use as.mesh3d(QUAD(raster))
to get quad primitives or
as.mesh3d(QUAD(raster), triangles = TRUE)
to get triangle primitives directly
from raster cells.
The anglr package is released with license CC BY-NC-SA 4.0 to match the one
dependency RTriangle. Please note and respect the license of the RTriangle
package used by the DEL()
or DEL0()
functions in anglr, and invoked
within 3D plot methods. These return high-quality constrained Delaunay
triangulations of polygonal regions, with the ability to control mesh
characteristics including maximum triangle area, minimum internal angle, and
conformance to the Delaunay criterion. If you are interested in
a less restrictive license for high-quality meshing in R please
get involved with the laridae package
which aims to provide access to CGAL.
## ---- intepolate via triangulation, sample points from volcano rgl::clear3d() n <- 150 max_area <- .005 ## we working in x 0,1 y 0,1 library(anglr) library(dplyr)#> #>#>#> #>#>#> #>#>#> #>d <- data.frame(x = runif(n), y = runif(n), multipoint_id = 1) %>% dplyr::mutate( z = raster::extract(raster::raster(volcano), cbind(x, y)), multipoint_id = 1 ) # \donttest{ mesh <- DEL0( sfheaders::sf_multipoint(d, x = "x", y = "y", z = "z", multipoint_id = "multipoint_id"), max_area = max_area) plot3d(mesh , color = "darkgrey", specular = "darkgrey") #sample(grey.colors(5))) # }