<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt">Veja um exemplo a seguir: <br><br>x0 <- seq(3, 21, 3)<br>y0 <- seq(2.5, 21, 2.5)<br>xy0 <- as.matrix(expand.grid(x=x0, y=y0))<br>n0 <- nrow(xy0)<br><br>symbols(xy0[,1], xy0[,2], rep(0.3, n0),<br>        inches=FALSE, bg=4, asp=1)<br><br>rpts <- function(n, xy.no, xlim, ylim, radius) {<br>  xy.res <- matrix(NA, n, 2)<br>  for (i in 1:n) {<br>    sim <- TRUE<br>    while (sim) {<br>      x <- runif(1, xlim[1], xlim[2])<br>      y <- runif(1, ylim[1], ylim[2])<br>      sim <- min(sqrt((xy.no[,1]-x)^2 + (xy.no[,2]-y)^2))<radius<br>    }<br>    xy.res[i,] <- c(x,y)<br>  }<br>  return(xy.res)<br>}<br><br>pts <-
 rpts(30, xy0, c(2,22), c(2,21), 0.3)<br><br>points(pts, col=2, pch=3)<br><br><div>Att. <br></div><div>Elias T. Krainski<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;">  <div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"> <div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight: bold;">De:</span></b> ASANTOS <alexandresantosbr@yahoo.com.br><br> <b><span style="font-weight: bold;">Para:</span></b> r-br@listas.c3sl.ufpr.br <br> <b><span style="font-weight: bold;">Enviadas:</span></b> Terça-feira, 10 de Janeiro de 2012 16:14<br> <b><span style="font-weight: bold;">Assunto:</span></b> Re: [R-br] Criando um processo de pontos sobre uma área regular<br> </font> <br><meta http-equiv="x-dns-prefetch-control" content="off"><div id="yiv277056826">
  

    
  <div>
    Boa tarde pessoal,<br>
            <br>
                Retornei ao problema de simular um processo de pontos
    sobre uma área regular, representada por um plantio de árvores com
    25cm de tronco (com espaçamento 3x2.5m), onde os pontos não podem
    sobrepor os troncos. Tentei montar o algoritmo sugerido pelo Prof.
    Paulo, mas me deparei com alguns problemas, vou explicar passo a
    passo e ver se alguém da programação pode me dar um help, fiz:<br>
    <br>
    require(plotrix)<br>
    require(gpclib)<br>
    require(spatstat)<br>
    <br>
    ##Cria o limite da área<br>
    limx<-c(2,2,21,21)<br>
    limy<-c(2,21,21,2)<br>
    plot(limx,limy)##Plota o limite<br>
    lim=cbind(limx,limy)<br>
    lim<-as.matrix(lim)<br>
    polygon(lim)<br>
    <br>
    ##Cria as árvores regularmente espaçadas -3x2m<br>
    sq=seq(2.5,20,2.5)<br>
    coord<-NULL<br>
    for (k in sq) {<br>
        for(j in sq){<br>
    draw.circle(k,j+0.5,radius=0.25,col="red")##Representação gráfica
    dos troncos com 25cm de diâmetro<br>
    coord<-rbind(coord,c(k,j+0.5))##Coordenada das árvores -3x2m<br>
    colnames(coord)<-c("xc","yc")<br>
    }}<br>
    <br>
    ###Criando a janela a ser utilizada no pacote spatstat<br>
    cont<-lim<br>
    a <- as(lim, "gpc.poly")<br>
    w <- as.owin(a)<br>
    <br>
    ### Cria o processo de pontos - Poisson<br>
    <br>
    E é aqui vem o problema, pois não tem como eu adicionar um contador
    para ver ponto por ponto se a coordenada do ponto esta sobrepondo o
    tronco, pois a função rpoispp() do spatstat, cria o processo de
    pontos de Poisson em intensidade por unidade de área, sendo que
    minha ideia seria fazer:<br>
    <br>
    res<-NULL<br>
    <br>
    while (sqrt(outer(xy[,1],xc,"-")^2+outer(xy[,2],yc,"-")^2)>0.25)
    {##Calcula a distância dos pontos que não sobrepõem o tronco<br>
    <br>
    xypois=rpoispp(2,win=a)##Lambda = 2/m^2
<br>
    xd=xypois$x
<br>
    yd=xypois$y<br>
    points(xd,yd)<br>
    res=cbind(res,c(xd,yd)) #Cria a matriz de coordenada dos pontos<br>
    }<br>
    point(res[,1],res[,2])<br>
    ##<br>
    Sendo que o resultado final que espero obter são as coordenadas dos
    pontos que não ocupam o mesmo local que os troncos. Então pergunto
    se alguém poderia me dar uma luz, <br>
    Obrigado,<br>
    Alexandre<br>
    <br>
    <br>
    <br>
    Em 16-11-2011 17:03, ASANTOS escreveu:
    <blockquote type="cite">

      
      Prof. Paulo,<br>
          <br>
             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().<br>
      <br>
      Novamente obrigado,<br>
       <br>
      <pre class="yiv277056826moz-signature">-- 
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</pre>
      <br>
      Em 16-11-2011 15:29, Paulo Justiniano escreveu:
      <blockquote type="cite">Alexandre <br>
        <br>
        todas as arvores tem o mesmo " diametro" (area) <br>
        <br>
        se positivo o caminho seria uma simulação dentro de um loop
        "while" <br>
        até conseguir completar o numero de pontos requerido <br>
        <br>
        o algoritmo seria <br>
        <br>
        enquanto o numero de pontos nao é atingido: <br>
        <br>
        1. sorteie 1 ponto <br>
        2. calcule a distancia deste 'as arvores presentes e tome a
        menor <br>
        3. verifique se ele está no raio da árvoce <br>
        4 se nao estiver guarde o ponto e aumente o valor do contador <br>
        caso contrario simule outro sem mudar o contador <br>
        <br>
        <br>
        <br>
        <br>
        On Wed, 16 Nov 2011, ASANTOS wrote: <br>
        <br>
        <blockquote type="cite">Boa tarde pessoal, <br>
          <br>
             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: <br>
          <br>
          require(plotrix) <br>
          ##Cria o limite da área <br>
          limx<-c(2,2,20.5,20.5) <br>
          limy<-c(2,20.5,20.5,2) <br>
          plot(limx,limy) <br>
          lim=cbind(limx,limy) <br>
          lim<-as.matrix(lim) <br>
          polygon(lim) <br>
          <br>
          ##Aqui criei a posição das árvores e com área igual ao seu
          diâmetro <br>
          sq=seq(2.5,20,2.5) <br>
          for (k in sq) { <br>
             for(j in sq){ <br>
          draw.circle(k,j,radius=0.3,col="red") <br>
          }} <br>
          <br>
          <br>
          Bom agora eu queria jogar sobre essa área o processo de
          pontos: <br>
          <br>
          ##Criando o processo de pontos <br>
          x <- runif(n=500,min=0, max=20) <br>
          y <- runif(n=500,min=0, max=20) <br>
          xy<-cbind(x,y) <br>
          points(xy) <br>
          ## <br>
          <br>
          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. <br>
          Obrigado, <br>
          <br>
          -- <br>
          Alexandre DOS SANTOS <br>
          Engenheiro Florestal, Msc. <br>
          Laboratório de Entomologia Florestal <br>
          Departamento de Entomologia <br>
          Universidade Federal de Lavras <br>
          Caixa Postal 3037 <br>
          37200-000 - Lavras - Minas Gerais - Brasil <br>
          Tel: +55 35 92230304 <br>
          <br>
          _______________________________________________ <br>
          R-br mailing list <br>
          <a rel="nofollow" class="yiv277056826moz-txt-link-abbreviated" ymailto="mailto:R-br@listas.c3sl.ufpr.br" target="_blank" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
          <br>
          <a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
          <br>
          Leia o guia de postagem (<a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>)
          e forneça código mínimo reproduzível. <br>
          <br>
        </blockquote>
        <br>
        <fieldset class="yiv277056826mimeAttachmentHeader"></fieldset>
        <br>
        <pre>_______________________________________________
R-br mailing list
<a rel="nofollow" class="yiv277056826moz-txt-link-abbreviated" ymailto="mailto:R-br@listas.c3sl.ufpr.br" target="_blank" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
      </blockquote>
      <br>
      <br>
      <pre class="yiv277056826moz-signature">-- 
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</pre>
      <br>
      <fieldset class="yiv277056826mimeAttachmentHeader"></fieldset>
      <br>
      <pre>_______________________________________________
R-br mailing list
<a rel="nofollow" class="yiv277056826moz-txt-link-abbreviated" ymailto="mailto:R-br@listas.c3sl.ufpr.br" target="_blank" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a rel="nofollow" class="yiv277056826moz-txt-link-freetext" target="_blank" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
    </blockquote>
    <br>
    <br>
    <pre class="yiv277056826moz-signature">-- 
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</pre>
  </div>
</div><meta http-equiv="x-dns-prefetch-control" content="on"><br>_______________________________________________<br>R-br mailing list<br><a ymailto="mailto:R-br@listas.c3sl.ufpr.br" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br><br> </div> </div> </blockquote></div>   </div></body></html>