是否有一种直接的方法可以在 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 数据绘制非凸面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24608883/