0

想象一下,我有一个 3 列矩阵 x、y、z,其中 z 是 x 和 y 的高度/强度。

x = runif(1000)
y = runif(1000)
z = rnorm(1000)

如何使用rayshader packge从x,y,z获得3D表面?

虽然 rgl 可以做到,但我认为是否可以直接将光线着色器用于 x、y、z 的 3D 表面?

谢谢嘻嘻

4

1 回答 1

0

您可以使用akima::interp值矩阵来近似曲面,并且也许rayshader::ray_shade可以处理它。代码将是

m <- akima::interp(x, y, z, nx = 200, ny = 200)
s <- rayshader::ray_shade(m$z)

这给出了一个阴影值矩阵;它什么也没画。要绘制一些东西,您需要将这些值转换为颜色并显示它们。例如,

plot(as.raster(s))

这给出了这个情节:

在此处输入图像描述

于 2020-11-29T10:34:15.120 回答