[R-br] Cálculo de Volume de Sólido Irregular

Tiago Vieira tiagovieira7 em yahoo.com.br
Terça Março 27 17:50:42 BRT 2012


Rubem,
 
Este não é o meu caso, pois não tenho função, só um grid e o sólido é irregular. Por exemplo, como poderia calcular o volume da seguinte esfera:
 
library(lattice)
x <- 0:100
y <- 0:100
z <- 0:100
r <- 30
xyz <- expand.grid(x,y,z)
dados <- cbind(xyz,as.numeric(sqrt(rowSums((xyz-50.5)^2))<=r))
colnames(dados) <- c("x","y","z","var")
cloud(z ~ x * y, data = dados[dados$var==1,], groups = var, screen = list(x = -90, y = 70),
xlim = c(0,100), ylim = c(0,100), zlim = c(0,100))
 
Att,
 
Tiago Viera.

De: Rubem Kaipper Ceratti <rubem_ceratti em yahoo.com.br>
Para: "r-br em listas.c3sl.ufpr.br" <r-br em listas.c3sl.ufpr.br>; Tiago Vieira <tiagovieira7 em yahoo.com.br> 
Enviadas: Sexta-feira, 23 de Março de 2012 9:25
Assunto: Re: [R-br] Cálculo de Volume de Sólido Irregular


Tiago,

Se for possível calcular o valor da função em qualquer ponto, então talvez você possa utilizar integração por Monte Carlo. Por exemplo:


# Cálculo de volume (1/8 de esfera de raio r)
r<-1

ux<-runif(2e4,0,r)
uy<-runif(2e4,0,r)
uz<-runif(2e4,0,r)

id<-ux^2+uy^2+uz^2<=r^2

mean(id)*r^3        # Aproximado
4*pi*r^3/(3*8)      # Exato


# Vizualização
np=200
x<-seq(0,r,l=np)
z<-outer(x,x,function(x,y) sqrt(r^2-x^2-y^2))

library(rgl)
persp3d(x,x,z)
points3d(ux,uy,uz,pch=20,col=ifelse(id==TRUE,4,2))


Att.,
Rubem
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120327/0ddc71aa/attachment.html>


Mais detalhes sobre a lista de discussão R-br