gpt4 book ai didi

r - 在 R 中绘制球体上的点

转载 作者:行者123 更新时间:2023-12-04 00:41:30 24 4
gpt4 key购买 nike

你能帮我在 R 中做一个类似的情节吗?

enter image description here

我想让它具有交互性,以便我可以旋转球体。我想我应该使用 rgl .我找到了一个类似于我需要的示例 here ,但是我找不到绘制网格而不是填充球体的方法。

更新:可以帮助回答问题的可重现数据集(我从 here 中获取):

u <- runif(1000,0,1) 
v <- runif(1000,0,1)
theta <- 2 * pi * u
phi <- acos(2 * v - 1)
x <- sin(theta) * cos(phi)
y <- sin(theta) * sin(phi)
z <- cos(theta)
library("lattice")
cloud(z ~ x + y)

最佳答案

开始于

library("rgl")
spheres3d(0,0,0,lit=FALSE,color="white")
spheres3d(0,0,0,radius=1.01,lit=FALSE,color="black",front="lines")

创建一个“线框”球体(我在这里画了两个球体有点作弊,一个比另一个大一点......可能有更好的方法来做到这一点,但我不能轻松/快速想办法)。

来自 Wolfram web page on sphere point picking (你的图片来源)我们得到

Similarly, we can pick u=cos(phi) to be uniformly distributed (so we have du=sin phi dphi) and obtain the points x = sqrt(1-u^2)*cos(theta); y = sqrt(1-u^2)*sin(theta); z=u with theta in [0,2pi) and u in [-1,1], which are also uniformly distributed over S^2.



所以:
set.seed(101)
n <- 50
theta <- runif(n,0,2*pi)
u <- runif(n,-1,1)
x <- sqrt(1-u^2)*cos(theta)
y <- sqrt(1-u^2)*sin(theta)
z <- u
spheres3d(x,y,z,col="red",radius=0.02)

球体需要更多的努力来渲染,但比 points3d() 的结果更漂亮(扁平方块)...

enter image description here

关于r - 在 R 中绘制球体上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539268/

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