是否有一种直接的方法可以在 R 中绘制非凸面?

我对凸面使用了类似以下的东西,它工作正常:

xyz <- cbind(y,x,z)
tbr <- t(surf.tri(xyz, delaunayn(xyz)))
rgl.triangles(xyz[tbr,1], xyz[tbr,2], xyz[tbr,3])

但是,对于非凸面,凹面区域会被填充。我认为这是函数 delaunayn() 的一个问题,因为它使用 Qhull 库,该库不支持非凸对象的受限 Delaunay 三角剖分或网格生成。

任何建议表示赞赏。

附言

我有一个 ascii 文件的数据,但它有 3 列,长 225 行。提供此功能的最佳方式是什么?

数据可在:http://pastebin.com/R2p4Cf7d

情节的顶部应该是凹的!这是使用 persp3d() 创建的图像,显​​示表面的外观。它是在极坐标中使用规则网格上更多的网格点来计算的,而不是使用不规则的搭配点。

最佳答案

在这种情况下,我觉得 deldir::deldir()geometry::delaunayn() 做得更好(作为对新函数 rgl::plot3d.deldir() 的纪念)。 (我使用了 OP's Data 。)

library(rgl); library(deldir)

dxyz <- deldir(xyz[,1], xyz[,2], z=xyz[,3])

open3d()
plot3d(dxyz, col=cm.colors(256)[cut(xyz[,3], 256)], alpha=0.9)  # there isn't a bottom
wire3d(as.mesh3d(dxyz), col="black")

r - 如何从一组 n x 3 数据绘制非凸面-LMLPHP

关于r - 如何从一组 n x 3 数据绘制非凸面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24608883/

10-12 20:04