gpt4 book ai didi

r - 如何在 rgl plot3d 中绘制曲面

转载 作者:行者123 更新时间:2023-12-02 17:02:33 24 4
gpt4 key购买 nike

所以我有这段代码可以生成精确的表面

f = function(x, y){
z = ((x^2)+(3*y^2))*exp(-(x^2)-(y^2))
}
plot3d(f, col = colorRampPalette(c("blue", "white")),
xlab = "X", ylab = "Y", zlab = "Z",
xlim = c(-3, 3), ylim = c(-3, 3),
aspect = c(1, 1, 0.5))

给出以下情节: 3d exact plot现在我有一些代码可以执行随机游走大都会算法来重现上面的图像。我认为它的工作原理就好像我对这些计算值做了另一幅图,我得到了下一张 500 点的图像。这是代码

open3d()
plot3d(x0, y0, f(x0, y0), type = "p")

给出了以下情节: enter image description here我知道很难看这张静止图像,但能够旋转采样是可行的。

现在这是我的问题:我如何使用 plot3d() 以便我可以拥有一个连接所有这些点的表面,并给出更锯齿状的精确图的表示?或者我怎样才能将 z 轴上的每个点作为 xy 平面的一个条?我只想要比点更多 3 维的东西,但我找不到如何做到这一点。

谢谢你的帮助

最佳答案

您可以通过对表面进行三角测量来做到这一点。你没有给我们你的实际数据,但我可以使用

创建一些类似的数据
f = function(x, y){
z = ((x^2)+(3*y^2))*exp(-(x^2)-(y^2))
}
x <- runif(500, -3, 3)
y <- runif(500, -3, 3)
z <- f(x, y)

然后使用?persp3d.deldir中的方法完成绘图:

library(deldir)
library(rgl)
col <- colorRampPalette(c("blue", "white"))(20)[1 + round(19*(z - min(z))/diff(range(z)))]
dxyz <- deldir::deldir(x, y, z = z, suppressMsge = TRUE)
persp3d(dxyz, col = col, front = "lines", back = "lines")

这可能需要一些修饰,例如

aspect3d(2, 2, 1)

经过一些旋转后,这给了我以下情节:

enter image description here

关于r - 如何在 rgl plot3d 中绘制曲面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53398108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com