<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Muito Obrigado Elias,<br>
    <br>
               Era exatamente isso que eu estava procurando,<br>
    <br>
    Redobrados agradecimentos,<br>
    <br>
    Alexandre<br>
    <br>
    <br>
    <br>
    <br>
    Em 10-01-2012 16:42, Elias T. Krainski escreveu:
    <blockquote
      cite="mid:1326220961.49549.YahooMailNeo@web114710.mail.gq1.yahoo.com"
      type="cite">
      <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 <a class="moz-txt-link-rfc2396E" href="mailto:alexandresantosbr@yahoo.com.br"><alexandresantosbr@yahoo.com.br></a><br>
                  <b><span style="font-weight: bold;">Para:</span></b>
                  <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a> <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 moz-do-not-send="true" 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 moz-do-not-send="true" 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
                            moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true" 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 moz-do-not-send="true"
                  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 moz-do-not-send="true"
                  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 moz-do-not-send="true"
                  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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
R-br mailing list
<a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a class="moz-txt-link-freetext" 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 class="moz-txt-link-freetext" 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="moz-signature" cols="72">-- 
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>
  </body>
</html>