Построение поверхности сферы с использованием 3d триангулированных панелей Делоне в R

[РЕДАКТИРОВАТЬ: более общие решения можно увидеть в ответах наэтот вопрос]

Мне интересно, может ли кто-нибудь помочь мне построить аппроксимацию поверхности сферы, используя координаты XYZ. Я попытался вычислить триангулированные панели Делоне, используя пакетgeometry а затем построить сrgl, Первая попытка, которая выглядит красиво, к сожалению, создала 3d треугольники Делоне, которые пересекают сферу. В конечном итоге я хотел бы только построить поверхность:

Генерация 3D XYZ данных сферы
n <- 10 
rho <- 1
theta <- seq(0, 2*pi,, n) # azimuthal coordinate running from 0 to 2*pi 
phi <- seq(0, pi,, n) # polar coordinate running from 0 to pi (colatitude)
grd <- expand.grid(theta=theta, phi=phi)

x <- rho * cos(grd$theta) * sin(grd$phi)
y <- rho * sin(grd$theta) * sin(grd$phi)
z <- rho * cos(grd$phi)
xyzw <- cbind(x,y,z,w=1)
Рассчитайте 3d треугольники Делоне и построите график с помощью rgl:
#install.packages("geometry")
library(geometry)
library(rgl)

tc <- delaunayn(xyzw[,1:3])
open3d()
tetramesh(tc,cbind(x,y,z), alpha=0.2, col=5)
rgl.snapshot("3d_delaunay.png")

Попытка вернуть только поверхностные треугольники с помощью 2d триангуляции Делоне
tc <- delaunayn(xyzw[,c(1:2)])
open3d()
for(i in seq(nrow(tc))){
    vertices <- c(t(xyzw[tc[i,],]))
    indices <- c( 1, 2, 3)
    shade3d( tmesh3d(vertices,indices) , alpha=0.2, col="cyan")
}
rgl.snapshot("2d_delaunay.png")

Очевидно, что-то не работает. Любая помощь будет принята с благодарностью.

Ответы на вопрос(0)

Ваш ответ на вопрос