Ответ 1
Начните с
library("rgl")
spheres3d(0,0,0,lit=FALSE,color="white")
spheres3d(0,0,0,radius=1.01,lit=FALSE,color="black",front="lines")
чтобы создать сферу "каркаса" (я немного обманываю здесь, рисуя две сферы, одну немного больше, чем другую... может быть лучший способ сделать это, но я не мог легко/быстро понять).
с веб-страница Wolfram по выбору сферы (), мы получаем
Аналогично, мы можем выбрать u = cos (phi) равномерно распределенным (так что мы имеем du = sin phi dphi) и получаем точки
x = sqrt(1-u^2)*cos(theta)
;y = sqrt(1-u^2)*sin(theta)
;z=u
с тетой в [0,2pi) и u в [-1,1], которые также равномерно распределены по 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()
(плоские квадраты)...