Deu certo?
Fiquei curioso.
Aliás, não faz diferença no atual problema, mas como eu venho treinando o uso de funções da família apply para evitar loopings, resolvi mexer no código informado na primeira mensagem.
Troquei:
for (k in sq) {
for(j in sq){
draw.circle(k,j,radius=0.3,col="red")
}}
por dois sapply, um dentro do outro:
sapply(sq, function(k) sapply(sq,function(j) {draw.circle(k,j,radius=0.3,col="red")}))
O resultado foi o mesmo. Eu só não soube dizer se isso é mais eficiente do que como estava inicialmente, com os dois for.
Para bases grandes (talvez gigantes) os sapply reduziriam bastante o tempo de processamento ou de memória utilizada?
Abs.
Paulo
Prof. Paulo,
Perfeito, as árvores tem aproximadamente o mesmo diâmetro sim, pois são clones de eucalipto. Vou montar o algoritmo sugerido e calcular as distâncias com a função outer().
Novamente obrigado,Em 16-11-2011 15:29, Paulo Justiniano escreveu:
-- Alexandre DOS SANTOS Engenheiro Florestal, Msc. Laboratório de Entomologia Florestal Departamento de Entomologia Universidade Federal de Lavras Caixa Postal 3037 37200-000 - Lavras - Minas Gerais - Brasil Tel: +55 35 92230304Alexandre
todas as arvores tem o mesmo " diametro" (area)
se positivo o caminho seria uma simulação dentro de um loop "while"
até conseguir completar o numero de pontos requerido
o algoritmo seria
enquanto o numero de pontos nao é atingido:
1. sorteie 1 ponto
2. calcule a distancia deste 'as arvores presentes e tome a menor
3. verifique se ele está no raio da árvoce
4 se nao estiver guarde o ponto e aumente o valor do contador
caso contrario simule outro sem mudar o contador
On Wed, 16 Nov 2011, ASANTOS wrote:
Boa tarde pessoal,
Estou tentando criar um processo de pontos aleatório sobre uma área regular representada por árvores regularmente espaçadas, sendo que o processo de pontos só pode ocorrer onde não existam árvores e estou quebrando a cabeça com isso, bom primeiro criei a área com as árvores:
require(plotrix)
##Cria o limite da área
limx<-c(2,2,20.5,20.5)
limy<-c(2,20.5,20.5,2)
plot(limx,limy)
lim=cbind(limx,limy)
lim<-as.matrix(lim)
polygon(lim)
##Aqui criei a posição das árvores e com área igual ao seu diâmetro
sq=seq(2.5,20,2.5)
for (k in sq) {
for(j in sq){
draw.circle(k,j,radius=0.3,col="red")
}}
Bom agora eu queria jogar sobre essa área o processo de pontos:
##Criando o processo de pontos
x <- runif(n=500,min=0, max=20)
y <- runif(n=500,min=0, max=20)
xy<-cbind(x,y)
points(xy)
##
Porém, os pontos também caem nas mesmas posições ocupadas pelas árvores (obviamente), onde gostaria de saber se alguém conheceria alguma solução para eu fazer com que não haja sobreposição entre os raios que representam os diâmetros das árvores e os pontos criados? Na verdade, preciso definir uma maneira de fazer com que as coordenadas contidas nos diâmetros das árvores não sejam validas no momento da geração do processo de pontos, atualmente estou tentando soluções com o pacote spatstat mais sem sucesso, pois não consigo fazer com que a área criada seja um objeto ppp valido.
Obrigado,
--
Alexandre DOS SANTOS
Engenheiro Florestal, Msc.
Laboratório de Entomologia Florestal
Departamento de Entomologia
Universidade Federal de Lavras
Caixa Postal 3037
37200-000 - Lavras - Minas Gerais - Brasil
Tel: +55 35 92230304
_______________________________________________
R-br mailing list
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.
_______________________________________________ R-br mailing list 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.
-- Alexandre DOS SANTOS Engenheiro Florestal, Msc. Laboratório de Entomologia Florestal Departamento de Entomologia Universidade Federal de Lavras Caixa Postal 3037 37200-000 - Lavras - Minas Gerais - Brasil Tel: +55 35 92230304
_______________________________________________
R-br mailing list
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.