3

我有以 xyz 点格式表示 3D 表面(即地震断层平面)的数据。我想创建这些表面的 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,它看起来很有希望,但我不确定如何使用它来解决这个问题。

4

1 回答 1

2

你如何确定这些点如何连接在一起作为一个表面?按距离?这可能是一种方式,并且该alphashape3d软件包可能有用。否则,如果您确切知道它们是如何连接的,那么您可以直接用rgl结构将其可视化。

于 2012-06-06T01:29:08.950 回答