Cálculo de Volume de Sólido Irregular

Olá a todos, Você sabem me informar se há alguma função, já implementado no R, que calcule o volume de um sólido irregular. As dados que tenho é um grid (X, Y e Z) e uma variável indicadora que informa se o ponto pertence ou não ao sólido, resultados de uma krigagem indicativa. Att, Tiago Vieira.

Hum. Se você diz que tem um cubo de malha x,y,z (espaçamentos conhecidos) e uma indicadora que informa se o ponto pertence ao solido irregular que está todo contido no cubo, então não é só fazer uma soma dos pontos e multiplicar pela área de cada cubinho (menor unidade sólida)? À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Walmes, concordo com seu comentário, mas seria simples assim se minha figura tivesse superfície regular (com "cubinhos fechados" na superfície), o que não é o caso. E mesmo se fosse regular, o R não tem nenhuma função que faça esse processo de blocos ou o método de vetores? Pela Quadratura Gaussiana não pode ser, pois não tenho função, só os pontos. Desde já, agradeço a atenção! Att, Tiago Vieira. ________________________________ De: WalmesZeviani <walmeszeviani@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quinta-feira, 22 de Março de 2012 18:04 Assunto: Re: [R-br] Cálculo de Volume de Sólido Irregular Hum. Se você diz que tem um cubo de malha x,y,z (espaçamentos conhecidos) e uma indicadora que informa se o ponto pertence ao solido irregular que está todo contido no cubo, então não é só fazer uma soma dos pontos e multiplicar pela área de cada cubinho (menor unidade sólida)? À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linuxusernumber: 531218 ========================================================================== _______________________________________________ R-br mailinglist R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

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

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@yahoo.com.br> Para: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br>; Tiago Vieira <tiagovieira7@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

Nesse teu CMR eu obteria o volume da esfera com isso 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)) str(dados) 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)) # qual volume do cubo? 100^3 # qual volume da esfera? table(dados$var) # esta é uma subestimativa # quanto do volume do cubo é da esfera? table(dados$var)/100^3 Estou certo ou cometendo algum engano? À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Tiago, No seu exemplo, o volume seria: x <- y <- 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") mean(dados$var)*100^3 # Aproximação 4*pi*30^3/3 # Exato A idéia aqui é que a proporção de pontos que caem dentro da esfera é aproximadamente a razão entre o volume da esfera e do cubo. Essa aproximação pode ser melhorada aumentando-se o número de pontos da malha. Não tinha visto na sua postagem original, mas se vc já tem uma variável indicadora com essa informação, o mesmo princípio se aplica. Att., Rubem
participantes (3)
-
Rubem Kaipper Ceratti
-
Tiago Vieira
-
Walmes Zeviani