quadmesh icon indicating copy to clipboard operation
quadmesh copied to clipboard

pure index mesh

Open mdsumner opened this issue 7 years ago • 2 comments

To be more generally useable quadmesh should provide the index, and allow the triangulated version as an alternative. So a ncol*nrow grid of any kind has two index options: quads, triangles. The quads are implicit against the centres being offset half cell out, but the triangles are trivial.

Both are segment-modulo logic and readily vectorized.

This will simplify turning rectilinear axes and 2D grids of coordinates into meshes, with the obvious AREA vs. POINT distinction.

mdsumner avatar Sep 15 '18 11:09 mdsumner

This turns out to be really simple, this creates rgl mesh just to demo but will work trivially with mesh_plot. Technically there's no need to actually use triangulation code, but I can't handle the index atm


  tri <- RTriangle::triangulate(RTriangle::pslg(P = cbind(raster::colFromCell(x, seq_len(raster::ncell(x))),
                                                          raster::rowFromCell(x, seq_len(raster::ncell(x))))))


  o <- structure(list(vb = t(cbind(coords, raster::values(x), 1)),
            it = t(tri$T),
            primitivetype = "triangle",
            material = list(),
            normals = NULL,
            texcoords = NULL), class = c("mesh3d", "shape3d"))

  rgl::open3d()
cols <- viridis::viridis(56)[scales::rescale(o$vb[3,o$it], c(1, 56))]

#print(str(cols))
  rgl::shade3d(o, col = cols)
  rgl::aspect3d(1, 1, .0001)  ## don't set z-exag to 0 ...

mdsumner avatar Sep 17 '18 13:09 mdsumner

Worked example with quads and triangles in rgl and in grid here: http://rpubs.com/cyclemumner/421078

Use that to apply to stars

mdsumner avatar Sep 18 '18 12:09 mdsumner