我有代表3D表面(例如地震断层面)的数据,以xyz点格式表示。我想创建这些表面的3D表示。我尝试使用rgl和akima,但是无法处理可能折回自身或在相同的x,y点具有多个z值的几何形状。另外,使用几何形状(来自qhull的convhulln函数)可以创建在rgl中漂亮显示的凸包,但这些是封闭表面,在现实中,对象是开放的(不完全包围点集)。是否有一种方法可以创建这些表面并渲染它们,最好在rgl中?
编辑
为了澄清,这些点是定义表面的点云。它们在表面上具有不同的密度覆盖。然而,主要问题是表面是单面的,不封闭,并且我不知道如何生成非封闭的网格/表面以用于更复杂的几何形状。
例如...
编辑
为了澄清,这些点是定义表面的点云。它们在表面上具有不同的密度覆盖。然而,主要问题是表面是单面的,不封闭,并且我不知道如何生成非封闭的网格/表面以用于更复杂的几何形状。
例如...
require(rgl)
require(akima)
faultdata<-cbind(c(1,1,1,2,2,2),c(1,1,1,2,2,2),c(10,20,-10,10,20,-10))
x <- faultdata[,1]
y <- faultdata[,2]
z <- faultdata[,3]
s <- interp(x,z,y,duplicate="strip")
surface3d(s$x,s$y,s$z,col=a,add=T)
这基本上创建了我想要的东西。但是,对于更复杂的平面来说,这并不一定适用。例如,数据如下:
faultdata<-cbind(c(2,2,2,2,2,2),c(1,1,1,2,2,2),c(10,20,-10,10,20,-10))
我不能使用这种方法,因为所有的点都是垂直共面的。同样的问题也使我不能使用convhulln,而且一般来说我不想要一个封闭的外壳,我想要一个表面。我看了一下alphashape3d,它看起来很有前途,但我不确定如何在这个问题上使用它。