Você está na página 1de 46

Diagrama de Voronoi

INF2604 – Geometria Computacional

Waldemar Celes
celes@inf.puc-rio.br

Departamento de Informática, PUC-Rio

W. Celes Diagrama de Voronoi 1


Diagrama de Voronoi
Determinação de proximidade
I Regiões de Voronoi delimitam áreas
cujo ponto associado é mais próximo

Região de Voronoi de um ponto p


Vor (p) = x ∈ R2 | kx − pk ≤ kx − qk ∀ q ∈ S
W. Devadoss
Figura extraı́da de Discrete and Computational Geometry, Celes and Diagrama
Rourke, 2011de Voronoi 2
Diagrama de Voronoi
Diagrama considerando apenas dois pontos p e q
I Regiões são semiplanos

H(p, q) = x ∈ R2 | kx − pk ≤ kx − qk

W. Celes Diagrama de Voronoi 3


Regiões de Voronoi
Teorema
I A região de Voronoi Vor (p) é a interseção de todos os
semiplanos H(p, q), onde q é qualquer outro ponto de S.

W. Celes Diagrama de Voronoi 4


Regiões de Voronoi
Teorema
I A região de Voronoi Vor (p) é a interseção de todos os
semiplanos H(p, q), onde q é qualquer outro ponto de S.

Teorema fundamental da geometria discreta


I A interseção de um conjunto de objetos convexos é convexo

W. Celes Diagrama de Voronoi 4


Regiões de Voronoi
Teorema
I A região de Voronoi Vor (p) é a interseção de todos os
semiplanos H(p, q), onde q é qualquer outro ponto de S.

Teorema fundamental da geometria discreta


I A interseção de um conjunto de objetos convexos é convexo
I Prova: considere Xi um conjunto de objeto convexos e X a
interseção desses conjuntos. Considere pontos arbitrários p e q
de X . Por definição de interseção, estes pontos também
pertencem a qualquer Xi e, como são convexo, pq também
pertencem a Xi e, consequentemente, a X .

W. Celes Diagrama de Voronoi 4


Regiões de Voronoi
Teorema
I A região de Voronoi Vor (p) é a interseção de todos os
semiplanos H(p, q), onde q é qualquer outro ponto de S.

Teorema fundamental da geometria discreta


I A interseção de um conjunto de objetos convexos é convexo
I Prova: considere Xi um conjunto de objeto convexos e X a
interseção desses conjuntos. Considere pontos arbitrários p e q
de X . Por definição de interseção, estes pontos também
pertencem a qualquer Xi e, como são convexo, pq também
pertencem a Xi e, consequentemente, a X .

Teorema
I Todas as regiões de Voronoi são convexas

W. Celes Diagrama de Voronoi 4


Vértices de Voronoi
Considere 3 pontos p, r, r
I Qual o diagrama de Voronoi?

W. Celes Diagrama de Voronoi 5


Vértices de Voronoi
Considere 3 pontos p, r, r
I Qual o diagrama de Voronoi?
I Formados pelas linhas perpendiculares bissetoras dos
segmentos pq, qr, rp
I Necessariamente se encontram em um único ponto
I Este ponto é o centro do cı́rculo que passa pelos 3 pontos

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 5


Vértices de Voronoi
Diagrama de Voronoi com 4 pontos
I Pontos cocirculares ou não

W. Celes Diagrama de Voronoi 6


Vértices de Voronoi
Diagrama de Voronoi com 4 pontos
I Pontos cocirculares ou não

Conjunto de pontos não degenerados


I Não existem 4 ou mais vértices cocirculares
I Todos os vértices de Voronoi tem grau 3

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 6


Vértices de Voronoi
Teorema
I Dado um conjunto de pontos S e seu respectivo diagrama de
Voronoi Vor (S), um ponto v é vértice de Voronoi sse existe
um cı́rculo com centro em v que passa por 3 pontos de S, e
não existe nenhum ponto de S interior a este cı́culo.

W. Celes Diagrama de Voronoi 7


Vértices de Voronoi
Teorema
I Dado um conjunto de pontos S e seu respectivo diagrama de
Voronoi Vor (S), um ponto v é vértice de Voronoi sse existe
um cı́rculo com centro em v que passa por 3 pontos de S, e
não existe nenhum ponto de S interior a este cı́culo.

Exercı́cio
I Para n ≥ 3:
I Quando o diagrama de Voronoi teria zero vértices?

W. Celes Diagrama de Voronoi 7


Vértices de Voronoi
Teorema
I Dado um conjunto de pontos S e seu respectivo diagrama de
Voronoi Vor (S), um ponto v é vértice de Voronoi sse existe
um cı́rculo com centro em v que passa por 3 pontos de S, e
não existe nenhum ponto de S interior a este cı́culo.

Exercı́cio
I Para n ≥ 3:
I Quando o diagrama de Voronoi teria zero vértices?
I Quando o diagrama de Voronoi teria um vértices?

W. Celes Diagrama de Voronoi 7


Arestas de Voronoi
Tipos de arestas
I Finitas
I Semiinfinitas

W. Celes Diagrama de Voronoi 8


Arestas de Voronoi
Tipos de arestas
I Finitas
I Semiinfinitas

Quando todos pontos são colineares


I Arestas são infinitas
I Arestas são desconectadas
Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 8


Diagrama de Voronoi
Relação linear entre número de vértices e número de arestas
I Dados S com n ≥ 3 pontos, o diagrama de Voronoi de S,
Vor (S):
I Tem no máximo 2n − 5 vértices
I Tem no máximo 3n − 6 arestas

W. Celes Diagrama de Voronoi 9


Diagrama de Voronoi
Relação linear entre número de vértices e número de arestas
I Dados S com n ≥ 3 pontos, o diagrama de Voronoi de S,
Vor (S):
I Tem no máximo 2n − 5 vértices
I Tem no máximo 3n − 6 arestas
I Prova:
I Similar a grafo planar onde vértice no infinito é representado

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 9


Construção do diagrama de Voronoi
Algoritmo incremental
I Dado um diagrama inicial
I Acrescenta um ponto p no diagrama
I Localiza a região de Voronoi Vor (p1 ) que contém p
I Acha bissetora de pp1
I Acha interseção com arestas da região: x1 e x2
I Acha bissetora de pp2
I Até fechar região Vor (p)

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 10


Construção do diagrama de Voronoi
Algoritmo incremental
I Complexidade O(n2 )

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 11


Diagrama de Voronoi
Grafo dual
I Arcos conectam pontos próximos
I Pontos cujas regiões de Voronoi compartilham uma aresta

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 12


Diagrama de Voronoi
Retificação dos arcos em arestas conectando pontos

W. Celes Diagrama de Voronoi 13


Diagrama de Voronoi
Retificação dos arcos em arestas conectando pontos

I Arestas não se cruzam


I Subdivisão resultante é uma triangulação de S
I Triangulação é de Delaunay
Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 13


Triangulação de Delaunay
Algoritmo incremental
I Explora dualidade com diagrama de Voronoi
I Suponha uma triangulação de Delaunay Del(Sk )
I Adiciona p
I Marca triângulos cujo circuncı́rculos contém p
I Elimina diagonais do polı́gono marcado
I Insere arestas de p aos vértices desse polı́gono

Figura extraı́da de Discrete and Computational Geometry, Devadoss and Rourke, 2011

W. Celes Diagrama de Voronoi 14


Diagrama de Voronoi Centroidal
CVT – Diagrama de Voronoi Centroidal
I Pontos geradores pi representam centros de massas
das correspondentes regiões de Voronoi Vor (pi )
I Regiões tendem a ser hexaedros regulares

W. Celes Diagrama de Voronoi 15


Diagrama de Voronoi Centroidal
Algoritmo de Lloyd
I Dado um conjunto inicial de geradores S
I Gera o diagrama de Voronoi correspondente
I Itera até convergência
I Move cada ponto gerador para o centro de massa da sua região
I Regera o diagrama de Voronoi considerando os novos p

W. Celes Diagrama de Voronoi 16


Diagrama de Voronoi Centroidal
Algoritmo de Lloyd
I Dado um conjunto inicial de geradores S
I Gera o diagrama de Voronoi correspondente
I Itera até convergência
I Move cada ponto gerador para o centro de massa da sua região
I Regera o diagrama de Voronoi considerando os novos p

W. Celes Diagrama de Voronoi 16


Diagrama de Voronoi Centroidal
Algoritmo de Lloyd
I Dado um conjunto inicial de geradores S
I Gera o diagrama de Voronoi correspondente
I Itera até convergência
I Move cada ponto gerador para o centro de massa da sua região
I Regera o diagrama de Voronoi considerando os novos p

W. Celes Diagrama de Voronoi 16


Diagrama de Voronoi Centroidal
Algoritmo de Lloyd
I Dado um conjunto inicial de geradores S
I Gera o diagrama de Voronoi correspondente
I Itera até convergência
I Move cada ponto gerador para o centro de massa da sua região
I Regera o diagrama de Voronoi considerando os novos p

W. Celes Diagrama de Voronoi 16


Diagrama de Voronoi discretizado
Diagrama de Voronoi em um domı́nio discretizado
I Exemplo: resolução de uma tela

W. Celes Diagrama de Voronoi 17


Diagrama de Voronoi discretizado
Diagrama de Voronoi em um domı́nio discretizado
I Exemplo: resolução de uma tela

Métodos
I Construção por renderização
I Construção por dilatação iterativa

W. Celes Diagrama de Voronoi 17


Diagrama de Voronoi discretizado
Construção por renderização de cones
I Vértices dos cones posicionados nos pontos geradores
I Vista ortográfica de cima
I Teste de visizilidade (depth test) garante corretude

W. Celes Diagrama de Voronoi 18


Diagrama de Voronoi discretizado
Construção por renderização de cones
I Vértices dos cones posicionados nos pontos geradores
I Vista ortográfica de cima
I Teste de visizilidade (depth test) garante corretude

W. Celes Diagrama de Voronoi 18


Diagrama de Voronoi discretizado
Construção por dilatação iterativa
I Cada ponto gerador é preenchido no domı́nio discreto
I A cada iteração, visita todos os pixels não preenchidos
I Preenche pixel com atributo de vizinho preenchido, se houver
I Repete o processo até que todos os pixels estejam preenchidos

W. Celes Diagrama de Voronoi 19


Diagrama de Voronoi discretizado
Construção por dilatação iterativa
I Cada ponto gerador é preenchido no domı́nio discreto
I A cada iteração, visita todos os pixels não preenchidos
I Preenche pixel com atributo de vizinho preenchido, se houver
I Repete o processo até que todos os pixels estejam preenchidos

O(n) iterações
I Números de iterações proporcional ao número de pixels

W. Celes Diagrama de Voronoi 19


Algoritmo jump flooding
Propagação completa com log n iterações
I Mas pode apresentar erros
I Pequenos e contornáveis na maior parte dos casos

W. Celes Diagrama de Voronoi 20


Algoritmo jump flooding
Preenchimento convencional

(x, y ) −→ (x + i, y + j) | i, j ∈ {−1, 0, 1}

W. Celes Diagrama de Voronoi 21


Algoritmo jump flooding
Preenchimento convencional

(x, y ) −→ (x + i, y + j) | i, j ∈ {−1, 0, 1}

Preenchimento com saltos (jumps)

(x, y ) −→ (x + i, y + j) | i, j ∈ {−k, 0, k}

W. Celes Diagrama de Voronoi 21


Algoritmo jump flooding
Estratégia
I Reduzir o passo a metade a cada iteração
I Cada pixel recebe informações de 8 outras localizações
I Mais a sua própria informação
I Cada pixel armazena a informação da menor distância

W. Celes Diagrama de Voronoi 22


Algoritmo jump flooding
Algoritmo
I Inı́cio
I Semente com informações [s, pos(s)]
I Não semente com informações [nil, nil]
I A cada iteração
I Informações dos pixels são atualizadas
I Escolhe-se a informação a menor distância

W. Celes Diagrama de Voronoi 23


Algoritmo jump flooding
Possı́veis erros
I No exemplo, p deveria ser r
I Mas p 0 e p 00 não tem r como menor distância

W. Celes Diagrama de Voronoi 24


Algoritmo jump flooding
Variações visando reduzir erros
I JFA + 1
I Uma passada extra com passo igual a 1 no final

W. Celes Diagrama de Voronoi 25


Algoritmo jump flooding
Variações visando reduzir erros
I JFA + 1
I Uma passada extra com passo igual a 1 no final
I JFA + 2
I Duas passadas extras no final com passos 2 e 1

W. Celes Diagrama de Voronoi 25


Algoritmo jump flooding
Variações visando reduzir erros
I JFA + 1
I Uma passada extra com passo igual a 1 no final
I JFA + 2
I Duas passadas extras no final com passos 2 e 1
I JFA + log n ou JFA2
I log n passadas adicionais

W. Celes Diagrama de Voronoi 25


Algoritmo jump flooding
Variações visando reduzir erros
I JFA + 1
I Uma passada extra com passo igual a 1 no final
I JFA + 2
I Duas passadas extras no final com passos 2 e 1
I JFA + log n ou JFA2
I log n passadas adicionais

I JFA + 2 sementes (ou +n sementes)


I Armazena os 2 (ou n) mais próximos
I Aumenta uso de memória
I Aumenta processamento para escolha do mı́nimo

W. Celes Diagrama de Voronoi 25


Trabalho
Implemente um algoritmo para construir uma triangulação de
Delaunay ou um diagrama de Voronoi considerando um conjunto
de pontos em posições arbitrárias (sem degeneração).
I Entrada: conjunto de pontos
x0 y0
x1 y1
...

I Saı́da
I Triangulação de Delaunay: incidência dos triângulos
vi vj vk
...
I Diagrama de Voronoi: coordenadas das arestas
I Coordenadas homogêneas
x0 y0 w0 x1 y1 w1
...

W. Celes Diagrama de Voronoi 26

Você também pode gostar