使用R中的Plot3D软件包增加三维曲面打印厚度

使用R中的Plot3D软件包增加三维曲面打印厚度,r,rgl,plot3d,R,Rgl,Plot3d,是否有办法增加3D曲面打印厚度,如使用R中的plot3D软件包中的persp3D()函数进行打印?在文档中似乎找不到任何内容。我不知道plot3D,但是rgl没有特定的功能。方法是计算与板边对应的多边形,并使用polygon3d绘制这些多边形。例如: data(volcano) persp3d(volcano, col = "green") # The bottom of the slab persp3d(volcano-10, col = "blue", add = TRUE) minx

是否有办法增加3D曲面打印厚度,如使用R中的
plot3D
软件包中的
persp3D()
函数进行打印?在文档中似乎找不到任何内容。

我不知道
plot3D
,但是
rgl
没有特定的功能。方法是计算与板边对应的多边形,并使用
polygon3d
绘制这些多边形。例如:

data(volcano)
persp3d(volcano, col = "green")

# The bottom of the slab
persp3d(volcano-10, col = "blue", add = TRUE)

minx <- 0
maxx <- 1
miny <- 0
maxy <- 1

m <- nrow(volcano)
n <- ncol(volcano)

# The front edge
edgex <- c(seq(minx, maxx, length.out = m),
           seq(maxx, minx, length.out = m))
edgey <- miny
edgez <- c(volcano[,1],rev(volcano[,1] - 10))
polygon3d(cbind(edgex, edgey, edgez), coords = c(1,3), 
          col = "yellow")

# The back edge
edgey <- maxy
edgez <- c(volcano[,n],rev(volcano[,n] - 10))
polygon3d(cbind(edgex, edgey, edgez), coords = c(1,3), col = "white")

edgex <- minx
edgey <- c(seq(miny, maxy, length.out = n),
           seq(maxy, miny, length.out = n))
edgez <- c(volcano[1,],rev(volcano[1,] - 10))
polygon3d(cbind(edgex, edgey, edgez), coords = c(2,3), col = "black")

edgex <- maxx
edgez <- c(volcano[m,],rev(volcano[m,] - 10))
polygon3d(cbind(edgex, edgey, edgez), coords = c(2,3), col = "green")
数据(火山)
persp3d(火山,col=“绿色”)
#楼板的底部
persp3d(火山-10,col=“蓝色”,add=TRUE)

minx我能够通过创建多个曲面并使用plot3D函数的
窗帘
参数将它们连接起来来实现这一点。厚度由每个表面的
z
参数控制。如果有人需要示例代码,请看这里

为了简单起见,我使用米来指定曲面的厚度/高度

library(plot3D)
library(plot3Drgl)

# volcano data range
clim <- range(volcano)

# Surface 1
persp3D(z = volcano, zlim = c(0, 600), clim = clim, 
        box = FALSE, plot = FALSE, curtain = TRUE, border = "black")

# Surface 2 - 20m below surface 1
persp3D(z = volcano - 20, clim = clim, colvar = volcano, 
        add = TRUE, colkey = FALSE, plot = FALSE, curtain = TRUE, border = "black")

# Surface 3 - 40m below surface 1
persp3D(z = volcano - 40, clim = clim, colvar = volcano, 
        add = TRUE, colkey = FALSE, plot = FALSE, curtain = TRUE, border = "black")

# Surface 4 - 60m below surface 1
persp3D(z = volcano - 60, clim = clim, colvar = volcano, 
        add = TRUE, colkey = FALSE, plot = TRUE, curtain = TRUE, border = "black")

# Surface 5 - 80m below surface 1
persp3D(z = volcano - 80, clim = clim, colvar = volcano, 
        add = TRUE, colkey = FALSE, plot = TRUE, curtain = FALSE, border = "black")

# Open rgl for interactive viewing
plotrgl()
库(plot3D)
库(plot3Drgl)
#火山数据范围

谢谢你的回复,@user2554330。我在processOutside(I)中遇到了以下错误:运行polygon3d(cbind(edgex,edgey,edgez),coords=c(2,3),col=“black”)
和polygon3d(cbind(edgex,edgey,edgez),coords=c(1,3),col=“yellow”)
时无法对多边形进行三角剖分。我试图修复代码,但没有成功。是的,三角剖分算法可能会失败。一般来说,如果您再试一次,它会工作,因为它通常有一个随机组件。但是,如果多边形设置不正确,它可能永远不会成功,因此值得检查您的边向量,例如,如果遇到问题,请调用
plot(edgex,edgez,type=“l”)
。非常感谢@user2554330。我会玩矢量游戏,很好看。(我添加了
library()
调用,以便于其他人使用。)