ponto está no polígono? - ime-uspcris/aulas/07_2_331/notas-de-aula/... · p convexo algoritmo...
TRANSCRIPT
![Page 1: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/1.jpg)
Ponto q está no polígono?
P convexo
Geometria Computacional – p.1/12
![Page 2: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/2.jpg)
Ponto q está no polígono?
P convexo
Algoritmo trivial:verifique se q está à esquerda de todas as arestas de P
Geometria Computacional – p.1/12
![Page 3: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/3.jpg)
Ponto q está no polígono?
P convexo
Algoritmo trivial:verifique se q está à esquerda de todas as arestas de P
Complexidade: linear
Geometria Computacional – p.1/12
![Page 4: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/4.jpg)
Ponto q está no polígono?
P convexo
Algoritmo trivial:verifique se q está à esquerda de todas as arestas de P
Complexidade: linear
Algo mais rápido?
Geometria Computacional – p.1/12
![Page 5: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/5.jpg)
Ponto q está no polígono?
P convexo
Algoritmo trivial:verifique se q está à esquerda de todas as arestas de P
Complexidade: linear
Algo mais rápido?
Busca binária!
Procure a fatia onde q está.
q está à esquerda ou à direitada aresta na fatia?
v0
q
Geometria Computacional – p.1/12
![Page 6: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/6.jpg)
Ponto q está no polígono?
E se P não for convexo?
Geometria Computacional – p.2/12
![Page 7: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/7.jpg)
Ponto q está no polígono?
E se P não for convexo?
Os dois algoritmos anteriores funcionam para algunspolígonos não convexos.
Quais?
Geometria Computacional – p.2/12
![Page 8: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/8.jpg)
Ponto q está no polígono?
E se P não for convexo?
Os dois algoritmos anteriores funcionam para algunspolígonos não convexos.
Quais?
Polígonos estrela(star polygon)
P tem um ponto p que enxergatodos os outros pontos de P .
p
q
Geometria Computacional – p.2/12
![Page 9: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/9.jpg)
Polígonos arbitrários
Problema: Dados P e q, decidir se q está ou não em P .
Geometria Computacional – p.3/12
![Page 10: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/10.jpg)
Polígonos arbitrários
Problema: Dados P e q, decidir se q está ou não em P .
Dois algoritmos lineares:
número de voltas (winding number)
cruzamentos de um raio (ray crossings)
Geometria Computacional – p.3/12
![Page 11: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/11.jpg)
Polígonos arbitrários
Problema: Dados P e q, decidir se q está ou não em P .
Dois algoritmos lineares:
número de voltas (winding number)
cruzamentos de um raio (ray crossings)
Ângulo com sinal de ~ab em relação a q:
a
ab
bθ > 0 θ < 0
q q
Geometria Computacional – p.3/12
![Page 12: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/12.jpg)
Winding number
Problema: Dados P e q, decidir se q está ou não em P .
Geometria Computacional – p.4/12
![Page 13: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/13.jpg)
Winding number
Problema: Dados P e q, decidir se q está ou não em P .
Calcule a soma dos ângulos com sinalde cada aresta de δP em relação a q.
Geometria Computacional – p.4/12
![Page 14: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/14.jpg)
Winding number
Problema: Dados P e q, decidir se q está ou não em P .
Calcule a soma dos ângulos com sinalde cada aresta de δP em relação a q.
Esse número é ou zero ou 2π.
Geometria Computacional – p.4/12
![Page 15: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/15.jpg)
Winding number
Problema: Dados P e q, decidir se q está ou não em P .
Calcule a soma dos ângulos com sinalde cada aresta de δP em relação a q.
Esse número é ou zero ou 2π.
Winding number: essa soma dividida por 2π
Geometria Computacional – p.4/12
![Page 16: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/16.jpg)
Winding number
Problema: Dados P e q, decidir se q está ou não em P .
Calcule a soma dos ângulos com sinalde cada aresta de δP em relação a q.
Esse número é ou zero ou 2π.
Winding number: essa soma dividida por 2π
Se o winding number é zero, q não está em P .Senão q está em P .
Geometria Computacional – p.4/12
![Page 17: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/17.jpg)
Ray crossingsProblema: Dados P e q, decidir se q está ou não em P .
Geometria Computacional – p.5/12
![Page 18: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/18.jpg)
Ray crossingsProblema: Dados P e q, decidir se q está ou não em P .
R: raio horizontal saindo de q para x = +∞
Quantas vezes que R cruza δP?
Geometria Computacional – p.5/12
![Page 19: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/19.jpg)
Ray crossingsProblema: Dados P e q, decidir se q está ou não em P .
R: raio horizontal saindo de q para x = +∞
Quantas vezes que R cruza δP?Quantas arestas de δP o raio R cruza?
Geometria Computacional – p.5/12
![Page 20: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/20.jpg)
Ray crossingsProblema: Dados P e q, decidir se q está ou não em P .
R: raio horizontal saindo de q para x = +∞
Quantas vezes que R cruza δP?Quantas arestas de δP o raio R cruza?
cruza 2 arestas
cruza 3
cruza 3
cruza 4
cruza 6
q1
q2
q3
q4
q5
Geometria Computacional – p.5/12
![Page 21: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/21.jpg)
Ray crossingsProblema: Dados P e q, decidir se q está ou não em P .
R: raio horizontal saindo de q para x = +∞
Quantas vezes que R cruza δP?Quantas arestas de δP o raio R cruza?
cruza 2 arestas
cruza 3
cruza 3
cruza 4
cruza 6
q1
q2
q3
q4
q5
Se cruza um número par de arestas, q não está em P .Senão q está em P .
Geometria Computacional – p.5/12
![Page 22: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/22.jpg)
Casos especiais
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
Geometria Computacional – p.6/12
![Page 23: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/23.jpg)
Casos especiais
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
cruza 4 arestas...
cruza 5 arestas...cruza 6 arestas...
cruza quantas??
q1
q2
q3
q4
Como tratar destes casos?
Geometria Computacional – p.6/12
![Page 24: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/24.jpg)
Casos especiais
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
cruza 3!
cruza 4!cruza 5!
cruza 3!
q1
q2
q3
q4
Como tratar destes casos?
Considere cada arestafechada no extremo superior e aberta no inferior!
Geometria Computacional – p.6/12
![Page 25: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/25.jpg)
Primeira versão do algoritmoSuponha que q é a origem.
Em-Polígono-v0(P, n)
1 c← 0
2 para i← 0 até n− 1 faça3 j ← (i + n− 1) mod n � vértice i− 1
4 se (P [i][Y ] > 0 e P [j][Y ] ≤ 0)4 se ou (P [j][Y ] > 0 e P [i][Y ] ≤ 0)5 então x← (P [i][X ] ∗ P [j][Y ]− P [j][X ] ∗ P [i][Y ])
5 então x← /(P [j][Y ]− P [i][Y ]) � intersecção c/ eixo x
6 se x > 0
7 então c← c + 1
8 se c é ímpar9 então devolva DENTRO
10 senão devolva FORA
Geometria Computacional – p.7/12
![Page 26: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/26.jpg)
Primeira versão do algoritmoSuponha que q é a origem.
Em-Polígono-v0(P, n)
1 c← 0
2 para i← 0 até n− 1 faça3 j ← (i + n− 1) mod n � vértice i− 1
4 se (P [i][Y ] > 0 e P [j][Y ] ≤ 0)4 se ou (P [j][Y ] > 0 e P [i][Y ] ≤ 0)5 então x← (P [i][X ] ∗ P [j][Y ]− P [j][X ] ∗ P [i][Y ])
5 então x← /(P [j][Y ]− P [i][Y ]) � intersecção c/ eixo x
6 se x > 0
7 então c← c + 1
8 se c é ímpar9 então devolva DENTRO
10 senão devolva FORA
Nem sempre funciona quando q está na fronteira de P ...Geometria Computacional – p.7/12
![Page 27: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/27.jpg)
Pontos na fronteira
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
Geometria Computacional – p.8/12
![Page 28: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/28.jpg)
Pontos na fronteira
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
cruza 2 arestas...
cruza 2 arestas...cruza 2 arestas...
cruza 4 arestas...
cruza 4 arestas...
q1
q2
q3
q4
q5
Geometria Computacional – p.8/12
![Page 29: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/29.jpg)
Pontos na fronteira
R: raio horizontal saindo de q para x = +∞
Quantas arestas de δP o raio R cruza?
cruza 2 arestas...
cruza 2 arestas...cruza 2 arestas...
cruza 4 arestas...
cruza 4 arestas...
q1
q2
q3
q4
q5
Erra em alguns pontos da fronteira,concluindo que eles estão fora de P ...
Geometria Computacional – p.8/12
![Page 30: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/30.jpg)
Casos especiais
Se aresta éfechada no extremo superior e aberta no inferior.
Geometria Computacional – p.9/12
![Page 31: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/31.jpg)
Casos especiais
Se aresta éfechada no extremo superior e aberta no inferior.
Pontos “em P ”:
Geometria Computacional – p.9/12
![Page 32: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/32.jpg)
Casos especiaisAgora considere ao contrário: que uma aresta éfechada no extremo inferior e aberta no superiore que R vai para x = −∞.
Pontos “em P ”:
Geometria Computacional – p.10/12
![Page 33: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/33.jpg)
Casos especiais
Primeira maneira:acerta no interior das arestas da esquerda e de baixo .
Segunda maneira:acerta no interior das arestas da direita e de cima.
Geometria Computacional – p.11/12
![Page 34: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/34.jpg)
Casos especiais
Primeira maneira:acerta no interior das arestas da esquerda e de baixo .
Segunda maneira:acerta no interior das arestas da direita e de cima.
Interpretando das duas maneiras,acertamos a resposta no interior de todas as arestas!
Geometria Computacional – p.11/12
![Page 35: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/35.jpg)
Casos especiais
Primeira maneira:acerta no interior das arestas da esquerda e de baixo .
Segunda maneira:acerta no interior das arestas da direita e de cima.
Interpretando das duas maneiras,acertamos a resposta no interior de todas as arestas!
Restam os vértices...
Quando q é um dos vértices de P ,a resposta pode ainda estar errada...
Geometria Computacional – p.11/12
![Page 36: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/36.jpg)
Casos especiais
Primeira maneira:acerta no interior das arestas da esquerda e de baixo .
Segunda maneira:acerta no interior das arestas da direita e de cima.
Interpretando das duas maneiras,acertamos a resposta no interior de todas as arestas!
Restam os vértices...
Quando q é um dos vértices de P ,a resposta pode ainda estar errada...
Faça um teste em separadopara ver se q não é um dos vértices de P .
Geometria Computacional – p.11/12
![Page 37: Ponto está no polígono? - IME-USPcris/aulas/07_2_331/notas-de-aula/... · P convexo Algoritmo trivial: ... Se o winding number é zero, q não está em P. ... Suponha que q é a](https://reader033.vdocuments.com.br/reader033/viewer/2022052407/5bfd141309d3f2c11d8bdf9d/html5/thumbnails/37.jpg)
Segunda versão do algoritmoEm-Polígono(P, n)
1 c← 0 d← 0
2 para i← 0 até n− 1 faça3 se P [i][X ] = 0 e P [i][Y ] = 0 então devolva VÉRTICE
4 j ← (i + n− 1) mod n � vértice i− 1
5 testec ← (P [i][Y ] > 0) 6= (P [j][Y ] > 0)
6 tested ← (P [i][Y ] < 0) 6= (P [j][Y ] < 0)
7 se testec ou tested
8 então x← intersecção com eixo x
9 se testec e x > 0 então c← c + 1
10 se tested e x < 0 então d← d + 1
11 se c e d têm paridade distinta12 então devolva EM ARESTA
13 se c é ímpar14 então devolva DENTRO
15 senão devolva FORA
Geometria Computacional – p.12/12