concom3d | R Documentation |
Computes the connected components of a triangular 'rgl' mesh.
concom3d(tmesh)
tmesh |
a triangular rgl mesh (of class mesh3d) |
A list of rgl meshes, each one corresponding to a connected component.
library(concom) library(rgl) library(rmarchingcubes) # credit to 'ICN5D' for this isosurface # (this is a 'not run' example because it is too time-consuming for CRAN) f <- function(x, y, z, a, cosb, sinb){ (sqrt((sqrt(x*x + (y*sinb + a*cosb)^2) - 2)^2) - 1)^2 + (sqrt((sqrt(z*z + (y*cosb - a*sinb)^2) - 2)^2) - 1)^2 } a <- 0.6 b <- 0.785 cosb <- cos(b) sinb <- sin(b) ## Not run: x <- z <- seq(-3.5, 3.5, len = 150L) y <- seq(-4.2, 4.2, len = 150L) g <- expand.grid(X = x, Y = y, Z = z) voxel <- array( with(g, f(X, Y, Z, a, cosb, sinb)), dim = c(150L, 150L, 150L) ) contour_shape <- contour3d( griddata = voxel, level = 0.1, x = x, y = y, z = z ) tmesh <- tmesh3d( vertices = t(contour_shape[["vertices"]]), indices = t(contour_shape[["triangles"]]), normals = contour_shape[["normals"]], homogeneous = FALSE ) components <- concom3d(tmesh) colors <- hcl.colors(length(components)) open3d(windowRect = c(50, 50, 562, 562), zoom = 0.9) lapply(1:length(components), function(i){ shade3d(components[[i]], color = colors[i]) }) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.