Upload
vukhanh
View
226
Download
3
Embed Size (px)
Citation preview
Maria Luacutecia Pereira Marques Pinto
Sobre a distacircncia de Hausdorffe a salsicha de Minkowsky
Mar
ia L
uacutecia
Per
eira
Mar
ques
Pin
to
janeiro de 2014UMin
ho |
201
4So
bre
a di
stacircn
cia
de H
ausd
orff
e a
sal
sich
a de
Min
kow
sky
Universidade do MinhoEscola de Ciecircncias
janeiro de 2014
Tese de MestradoMestrado em Ciecircncias - Formaccedilatildeo Contiacutenua de ProfessoresAacuterea de Especializaccedilatildeo em Matemaacutetica
Trabalho efetuado sob a orientaccedilatildeo deProfessora Doutora Lisa SantosProfessor Doutor Fernando Miranda
Maria Luacutecia Pereira Marques Pinto
Sobre a distacircncia de Hausdorffe a salsicha de Minkowsky
Universidade do MinhoEscola de Ciecircncias
Agradecimentos
Agradeco a todas as pessoas que tornaram possıvel a rea-
lizacao deste trabalho
Gostaria de expressar a minha gratidao de modo particular
A Doutora Lisa Santos orientadora desta tese que de forma
incondicional me deu todo o seu apoio quer cientıfico quer
pessoal um muito obrigada
Ao Doutor Fernando Miranda orientador desta tese pela dis-
ponibilidade pela paciencia demonstrada e por todo o seu
apoio um muito obrigada
A Gerarda Ribeiro amiga e colega sempre disponıvel que sem-
pre me deu uma palavra de apoio nos momentos de desalento
Aos meus irmaos pelo carinho e amizade e disponibilidade
que sempre demonstraram
Aos meus pais que sempre me incutiram a vontade e a ne-
cessidade do saber
Ao meu marido Manuel pela ajuda pelas palavras de incen-
tivo nos momentos de mais fragilidade e pela compreensao
Aos meus filhos Francisco e Luısa por compreenderem as
minhas ldquoausenciasrdquo
iii
Sobre a distancia de Hausdorff e a salsicha de Minkowsky
Resumo
A distancia de Hausdorff definida sobre os subconjuntos compactos de R2 tem pro-
vado ser um conceito muito util no reconhecimento de imagens justificando que se faca
algum investimento na compreensao desta ferramenta e na demonstracao de resultados que
envolvam esta distancia
Nesta dissertacao dado um espaco metrico (X d) definindo H(X) como o conjunto
dos compactos nao vazios de X pretendemos estudar algumas propriedades do espaco
metrico (H(X) dH) em que dH e a distancia de Hausdorff
Para ldquoeducarrdquo a nossa intuicao sobre esta distancia achamos relevante dispor de um
ambiente grafico em que se possam manipular objetos simples em R2 e explorar situacoes
relacionadas com este conceito
Nesta tese apresentam-se duas definicoes alternativas de distancia de Hausdorff em
H(X) Uma das definicoes utiliza o conceito de salsicha-ε de Minkowsky ou de vizinhanca-
-ε de um conjunto Restringindo-nos a R2 e para ajudar a compreensao do conceito de
convergencia de sucessoes de conjuntos introduz-se a definicao de convergencia segundo
de Kuratowski Prova-se que quando os conjuntos sao convexos a convergencia segundo
Kuratowski e equivalente a convergencia no espaco metrico em estudo
Sao abordados aspetos computacionais que permitem ilustrar o conceito de distancia
de Hausdorff sendo possıvel manipular objetos de R2 de forma simples e construir as suas
vizinhancas-ε Os objetos considerados sao pontos segmentos de reta e linhas poligonais
Constroi-se uma funcao que permite determinar a distancia de Hausdorff entre dois objetos
usando o conceito de salsicha-ε de Minkowsky O algoritmo usado para a construcao desta
funcao e fundamentado num conjunto de resultados enunciados e demonstrados nesta tese
iv
About the Hausdorff distance and the Minkowsky sausage
Abstract
The Hausdorff distance defined in the compact subsets of R2 has proven to be a very
useful concept in image recognition justifying some investment in the understanding of this
tool and in the proof of results involving this distance
In this dissertation given a metric space (X d) defining H(X) as the set of compact
and nonempty subsets of X we intend to study some properties of the metric space
(H(X) dH) where dH is the Hausdorff distance
In order to ldquoeducaterdquo our intuition about this distance we recognized it would be
relevant to have a graphical user interface in which we can manipulate simple objects of
R2 and explore situations related to this concept
In this thesis we present two alternative definitions of the Hausdorff distance in H(X)
One of the definitions uses the concept of Minkowski ε-sausage or ε-neighborhoud of a set
We restrict ourselves to R2 and to help in the comprehension of the concept of convergence
of sequences of sets we introduce the definition of Kuratowski convergence We prove that
when the sets are convex the Kuratowski convergence is equivalent to the convergence in
the metric space under study
Computational aspects that allow to illustrate the Hausdorff distance are discussed
being possible to manipulate objects in R2 in an easy way and to construct their ε-
neighbourhoods The objects considered are points line segments and polygonal lines
We construct a function that allows us to compute the Hausdorff distance between two
objects using the concept of Minkowski ε-sausage The algorithm used in the construction
of this function is justified by a set of results stated and proved in this thesis
v
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
janeiro de 2014
Tese de MestradoMestrado em Ciecircncias - Formaccedilatildeo Contiacutenua de ProfessoresAacuterea de Especializaccedilatildeo em Matemaacutetica
Trabalho efetuado sob a orientaccedilatildeo deProfessora Doutora Lisa SantosProfessor Doutor Fernando Miranda
Maria Luacutecia Pereira Marques Pinto
Sobre a distacircncia de Hausdorffe a salsicha de Minkowsky
Universidade do MinhoEscola de Ciecircncias
Agradecimentos
Agradeco a todas as pessoas que tornaram possıvel a rea-
lizacao deste trabalho
Gostaria de expressar a minha gratidao de modo particular
A Doutora Lisa Santos orientadora desta tese que de forma
incondicional me deu todo o seu apoio quer cientıfico quer
pessoal um muito obrigada
Ao Doutor Fernando Miranda orientador desta tese pela dis-
ponibilidade pela paciencia demonstrada e por todo o seu
apoio um muito obrigada
A Gerarda Ribeiro amiga e colega sempre disponıvel que sem-
pre me deu uma palavra de apoio nos momentos de desalento
Aos meus irmaos pelo carinho e amizade e disponibilidade
que sempre demonstraram
Aos meus pais que sempre me incutiram a vontade e a ne-
cessidade do saber
Ao meu marido Manuel pela ajuda pelas palavras de incen-
tivo nos momentos de mais fragilidade e pela compreensao
Aos meus filhos Francisco e Luısa por compreenderem as
minhas ldquoausenciasrdquo
iii
Sobre a distancia de Hausdorff e a salsicha de Minkowsky
Resumo
A distancia de Hausdorff definida sobre os subconjuntos compactos de R2 tem pro-
vado ser um conceito muito util no reconhecimento de imagens justificando que se faca
algum investimento na compreensao desta ferramenta e na demonstracao de resultados que
envolvam esta distancia
Nesta dissertacao dado um espaco metrico (X d) definindo H(X) como o conjunto
dos compactos nao vazios de X pretendemos estudar algumas propriedades do espaco
metrico (H(X) dH) em que dH e a distancia de Hausdorff
Para ldquoeducarrdquo a nossa intuicao sobre esta distancia achamos relevante dispor de um
ambiente grafico em que se possam manipular objetos simples em R2 e explorar situacoes
relacionadas com este conceito
Nesta tese apresentam-se duas definicoes alternativas de distancia de Hausdorff em
H(X) Uma das definicoes utiliza o conceito de salsicha-ε de Minkowsky ou de vizinhanca-
-ε de um conjunto Restringindo-nos a R2 e para ajudar a compreensao do conceito de
convergencia de sucessoes de conjuntos introduz-se a definicao de convergencia segundo
de Kuratowski Prova-se que quando os conjuntos sao convexos a convergencia segundo
Kuratowski e equivalente a convergencia no espaco metrico em estudo
Sao abordados aspetos computacionais que permitem ilustrar o conceito de distancia
de Hausdorff sendo possıvel manipular objetos de R2 de forma simples e construir as suas
vizinhancas-ε Os objetos considerados sao pontos segmentos de reta e linhas poligonais
Constroi-se uma funcao que permite determinar a distancia de Hausdorff entre dois objetos
usando o conceito de salsicha-ε de Minkowsky O algoritmo usado para a construcao desta
funcao e fundamentado num conjunto de resultados enunciados e demonstrados nesta tese
iv
About the Hausdorff distance and the Minkowsky sausage
Abstract
The Hausdorff distance defined in the compact subsets of R2 has proven to be a very
useful concept in image recognition justifying some investment in the understanding of this
tool and in the proof of results involving this distance
In this dissertation given a metric space (X d) defining H(X) as the set of compact
and nonempty subsets of X we intend to study some properties of the metric space
(H(X) dH) where dH is the Hausdorff distance
In order to ldquoeducaterdquo our intuition about this distance we recognized it would be
relevant to have a graphical user interface in which we can manipulate simple objects of
R2 and explore situations related to this concept
In this thesis we present two alternative definitions of the Hausdorff distance in H(X)
One of the definitions uses the concept of Minkowski ε-sausage or ε-neighborhoud of a set
We restrict ourselves to R2 and to help in the comprehension of the concept of convergence
of sequences of sets we introduce the definition of Kuratowski convergence We prove that
when the sets are convex the Kuratowski convergence is equivalent to the convergence in
the metric space under study
Computational aspects that allow to illustrate the Hausdorff distance are discussed
being possible to manipulate objects in R2 in an easy way and to construct their ε-
neighbourhoods The objects considered are points line segments and polygonal lines
We construct a function that allows us to compute the Hausdorff distance between two
objects using the concept of Minkowski ε-sausage The algorithm used in the construction
of this function is justified by a set of results stated and proved in this thesis
v
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Agradecimentos
Agradeco a todas as pessoas que tornaram possıvel a rea-
lizacao deste trabalho
Gostaria de expressar a minha gratidao de modo particular
A Doutora Lisa Santos orientadora desta tese que de forma
incondicional me deu todo o seu apoio quer cientıfico quer
pessoal um muito obrigada
Ao Doutor Fernando Miranda orientador desta tese pela dis-
ponibilidade pela paciencia demonstrada e por todo o seu
apoio um muito obrigada
A Gerarda Ribeiro amiga e colega sempre disponıvel que sem-
pre me deu uma palavra de apoio nos momentos de desalento
Aos meus irmaos pelo carinho e amizade e disponibilidade
que sempre demonstraram
Aos meus pais que sempre me incutiram a vontade e a ne-
cessidade do saber
Ao meu marido Manuel pela ajuda pelas palavras de incen-
tivo nos momentos de mais fragilidade e pela compreensao
Aos meus filhos Francisco e Luısa por compreenderem as
minhas ldquoausenciasrdquo
iii
Sobre a distancia de Hausdorff e a salsicha de Minkowsky
Resumo
A distancia de Hausdorff definida sobre os subconjuntos compactos de R2 tem pro-
vado ser um conceito muito util no reconhecimento de imagens justificando que se faca
algum investimento na compreensao desta ferramenta e na demonstracao de resultados que
envolvam esta distancia
Nesta dissertacao dado um espaco metrico (X d) definindo H(X) como o conjunto
dos compactos nao vazios de X pretendemos estudar algumas propriedades do espaco
metrico (H(X) dH) em que dH e a distancia de Hausdorff
Para ldquoeducarrdquo a nossa intuicao sobre esta distancia achamos relevante dispor de um
ambiente grafico em que se possam manipular objetos simples em R2 e explorar situacoes
relacionadas com este conceito
Nesta tese apresentam-se duas definicoes alternativas de distancia de Hausdorff em
H(X) Uma das definicoes utiliza o conceito de salsicha-ε de Minkowsky ou de vizinhanca-
-ε de um conjunto Restringindo-nos a R2 e para ajudar a compreensao do conceito de
convergencia de sucessoes de conjuntos introduz-se a definicao de convergencia segundo
de Kuratowski Prova-se que quando os conjuntos sao convexos a convergencia segundo
Kuratowski e equivalente a convergencia no espaco metrico em estudo
Sao abordados aspetos computacionais que permitem ilustrar o conceito de distancia
de Hausdorff sendo possıvel manipular objetos de R2 de forma simples e construir as suas
vizinhancas-ε Os objetos considerados sao pontos segmentos de reta e linhas poligonais
Constroi-se uma funcao que permite determinar a distancia de Hausdorff entre dois objetos
usando o conceito de salsicha-ε de Minkowsky O algoritmo usado para a construcao desta
funcao e fundamentado num conjunto de resultados enunciados e demonstrados nesta tese
iv
About the Hausdorff distance and the Minkowsky sausage
Abstract
The Hausdorff distance defined in the compact subsets of R2 has proven to be a very
useful concept in image recognition justifying some investment in the understanding of this
tool and in the proof of results involving this distance
In this dissertation given a metric space (X d) defining H(X) as the set of compact
and nonempty subsets of X we intend to study some properties of the metric space
(H(X) dH) where dH is the Hausdorff distance
In order to ldquoeducaterdquo our intuition about this distance we recognized it would be
relevant to have a graphical user interface in which we can manipulate simple objects of
R2 and explore situations related to this concept
In this thesis we present two alternative definitions of the Hausdorff distance in H(X)
One of the definitions uses the concept of Minkowski ε-sausage or ε-neighborhoud of a set
We restrict ourselves to R2 and to help in the comprehension of the concept of convergence
of sequences of sets we introduce the definition of Kuratowski convergence We prove that
when the sets are convex the Kuratowski convergence is equivalent to the convergence in
the metric space under study
Computational aspects that allow to illustrate the Hausdorff distance are discussed
being possible to manipulate objects in R2 in an easy way and to construct their ε-
neighbourhoods The objects considered are points line segments and polygonal lines
We construct a function that allows us to compute the Hausdorff distance between two
objects using the concept of Minkowski ε-sausage The algorithm used in the construction
of this function is justified by a set of results stated and proved in this thesis
v
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Sobre a distancia de Hausdorff e a salsicha de Minkowsky
Resumo
A distancia de Hausdorff definida sobre os subconjuntos compactos de R2 tem pro-
vado ser um conceito muito util no reconhecimento de imagens justificando que se faca
algum investimento na compreensao desta ferramenta e na demonstracao de resultados que
envolvam esta distancia
Nesta dissertacao dado um espaco metrico (X d) definindo H(X) como o conjunto
dos compactos nao vazios de X pretendemos estudar algumas propriedades do espaco
metrico (H(X) dH) em que dH e a distancia de Hausdorff
Para ldquoeducarrdquo a nossa intuicao sobre esta distancia achamos relevante dispor de um
ambiente grafico em que se possam manipular objetos simples em R2 e explorar situacoes
relacionadas com este conceito
Nesta tese apresentam-se duas definicoes alternativas de distancia de Hausdorff em
H(X) Uma das definicoes utiliza o conceito de salsicha-ε de Minkowsky ou de vizinhanca-
-ε de um conjunto Restringindo-nos a R2 e para ajudar a compreensao do conceito de
convergencia de sucessoes de conjuntos introduz-se a definicao de convergencia segundo
de Kuratowski Prova-se que quando os conjuntos sao convexos a convergencia segundo
Kuratowski e equivalente a convergencia no espaco metrico em estudo
Sao abordados aspetos computacionais que permitem ilustrar o conceito de distancia
de Hausdorff sendo possıvel manipular objetos de R2 de forma simples e construir as suas
vizinhancas-ε Os objetos considerados sao pontos segmentos de reta e linhas poligonais
Constroi-se uma funcao que permite determinar a distancia de Hausdorff entre dois objetos
usando o conceito de salsicha-ε de Minkowsky O algoritmo usado para a construcao desta
funcao e fundamentado num conjunto de resultados enunciados e demonstrados nesta tese
iv
About the Hausdorff distance and the Minkowsky sausage
Abstract
The Hausdorff distance defined in the compact subsets of R2 has proven to be a very
useful concept in image recognition justifying some investment in the understanding of this
tool and in the proof of results involving this distance
In this dissertation given a metric space (X d) defining H(X) as the set of compact
and nonempty subsets of X we intend to study some properties of the metric space
(H(X) dH) where dH is the Hausdorff distance
In order to ldquoeducaterdquo our intuition about this distance we recognized it would be
relevant to have a graphical user interface in which we can manipulate simple objects of
R2 and explore situations related to this concept
In this thesis we present two alternative definitions of the Hausdorff distance in H(X)
One of the definitions uses the concept of Minkowski ε-sausage or ε-neighborhoud of a set
We restrict ourselves to R2 and to help in the comprehension of the concept of convergence
of sequences of sets we introduce the definition of Kuratowski convergence We prove that
when the sets are convex the Kuratowski convergence is equivalent to the convergence in
the metric space under study
Computational aspects that allow to illustrate the Hausdorff distance are discussed
being possible to manipulate objects in R2 in an easy way and to construct their ε-
neighbourhoods The objects considered are points line segments and polygonal lines
We construct a function that allows us to compute the Hausdorff distance between two
objects using the concept of Minkowski ε-sausage The algorithm used in the construction
of this function is justified by a set of results stated and proved in this thesis
v
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
About the Hausdorff distance and the Minkowsky sausage
Abstract
The Hausdorff distance defined in the compact subsets of R2 has proven to be a very
useful concept in image recognition justifying some investment in the understanding of this
tool and in the proof of results involving this distance
In this dissertation given a metric space (X d) defining H(X) as the set of compact
and nonempty subsets of X we intend to study some properties of the metric space
(H(X) dH) where dH is the Hausdorff distance
In order to ldquoeducaterdquo our intuition about this distance we recognized it would be
relevant to have a graphical user interface in which we can manipulate simple objects of
R2 and explore situations related to this concept
In this thesis we present two alternative definitions of the Hausdorff distance in H(X)
One of the definitions uses the concept of Minkowski ε-sausage or ε-neighborhoud of a set
We restrict ourselves to R2 and to help in the comprehension of the concept of convergence
of sequences of sets we introduce the definition of Kuratowski convergence We prove that
when the sets are convex the Kuratowski convergence is equivalent to the convergence in
the metric space under study
Computational aspects that allow to illustrate the Hausdorff distance are discussed
being possible to manipulate objects in R2 in an easy way and to construct their ε-
neighbourhoods The objects considered are points line segments and polygonal lines
We construct a function that allows us to compute the Hausdorff distance between two
objects using the concept of Minkowski ε-sausage The algorithm used in the construction
of this function is justified by a set of results stated and proved in this thesis
v
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Conteudo
Introducao 1
1 Preliminares 4
11 Algumas nocoes metricas 4
12 Conjuntos convexos 9
2 Distancia de Hausdorff e salsicha de Minkowsky 13
21 A distancia de Hausdorff 13
22 Convergencia de sucessoes de subconjuntos de R2 22
3 Distancia de Hausdorff - uma abordagem computacional 27
31 Uma interface grafica dinamica 28
32 Caracterizacao da funcao Eps 29
33 Aspetos computacionais 43
331 Representacao grafica 43
332 A funcao Eps 45
Anexo - Funcoes do Mathematica 50
Bibliografia 58
vi
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Lista de Figuras
11 Distancia do ponto x ao conjunto A 5
12 O conjunto A e nao convexo e o conjunto B e convexo 10
21 Exemplo em que h(AB) 6= h(BA) 14
22 Dois conjuntos cuja distancia de Hausdorff e infinita 15
23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes 16
24 Distancia de Hausdorff entre os conjuntos A e B 17
25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski 19
26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizada
no interior de um dos conjuntos 23
31 Exemplo da interface grafica interativa + 29
32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) + 31
33 Exemplos de aplicacao da funcao Eps [ptlp] + 31
(a) Ponto e linha poligonal formada por dois pontos 31
(b) Ponto e linha poligonal formada por tres pontos 31
(c) Ponto e linha poligonal formada por quatro pontos 31
34 Exemplos de aplicacao da funcao Eps [segpt] + 32
(a) A distancia de B a [A1A2] e realizada num ponto pertencente ao pe
da perpendicular 32
(b) A distancia de B a [A1A2] e realizada num dos extremos do segmento
de reta 32
35 Exemplos de aplicacao da funcao Eps [lppt] + 33
vii
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Lista de Figuras viii
(a) O ponto B pertence a salsicha dos dois segmentos de reta que formam
a linha poligonal 33
(b) O ponto B pertence a salsicha de [A2A3] 33
(c) O ponto B pertence a salsicha de [A1A2] 33
36 Exemplos de aplicacao da funcao Eps [seglp] + 34
(a) Linha poligonal formada por dois segmentos de reta 34
(b) Linha poligonal formada por tres segmentos de reta 34
37 Caracterizacao do conjunto de equidistancia E 36
(a) Conjunto dos pontos em que a distancia aos segmentos de reta [A1A2]
ou [A2A3] se realiza no pe da perpendicular 36
(b) Regioes de pontos R1 a R6 36
(c) Pontos de equidistancia pertencentes a bissetriz do angulo angA1A2A3 36
(d) Pontos de equidistancia pertencentes ao arco de parabola E1E2 36
(e) Pontos de equidistancia pertencentes a mediatriz do segmento de reta
[A1A3] 36
(f) Conjunto de pontos equidistancia 36
38 Regiao de equidistancia + 38
39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1 39
310 Exemplos de aplicacao da funcao Eps [lpseg] + 42
(a) O valor de ε e calculado usando um ponto que pertence a curva de
equidistancia ΓE 42
(b) Situacao em que nao existe intersecao com a regiao de equidistancia E 42
(c) Situacao em que [B1B2] interseta o cone de equidistancia CE 42
311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 sao
atualizados em tempo real + 43
312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linha
poligonal + 44
(a) Construcao da salsicha de um segmento de reta usando apenas discos 44
(b) Construcao da salsicha de um segmento de reta usando dois discos e
um retangulo 44
(c) Construcao da salsicha de uma linha poligonal usando discos e retangulos 44
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Lista de Figuras ix
313 Posicao do ponto B relativamente ao segmento de reta [A1A2] 46
(a) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A1 46
(b) B situa-se no complementar do conjunto de pontos do plano compre-
endido entre as retas e mais proximo de A2 46
(c) B situa-se no conjunto de pontos do plano compreendido entre as retas 46
314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist 48
(a) Construcao do ponto E1 48
(b) Construcao do ponto E2 48
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Introducao
E habitual em matematica definir novas estruturas que se baseiam nas propriedades
de algum exemplo concreto tentando obter resultados num quadro abstrato o mais geral
possıvel Um exemplo bem conhecido e o estudo dos espacos metricos
Um espaco metrico (X d) e formado por um conjunto X munido de uma funcao d
nao negativa definida no produto cartesiano X times X a quem impomos as propriedades
bem conhecidas que sao satisfeitas pela distancia entre dois pontos em Rn A definicao
de uma distancia ou metrica num conjunto abre-nos a porta para o estudo de limites de
funcoes definidas em X e com valores noutro espaco metrico e como caso particular
da convergencia de sucessoes Permite-nos tambem caracterizar subconjuntos de X por
exemplo introduzindo as nocoes de conjunto conexo conexo por arcos ou compacto
Ao fazer generalizacoes um matematico deve fundamentar a sua escolha Estudar um
caso mais geral e justificavel se se ganhar com a abstracao que se esta a fazer Dificilmente
poderıamos convencer os leitores se abstraıssemos apenas por prazer uma vez que o caso
particular pode ser mais facil de perceber que o geral
Partindo de um espaco metrico (X d) podemos perguntar-nos se sera possıvel definir
em P(X) o conjunto das partes de X uma distancia A resposta e imediatamente sim
podemos considerar a metrica discreta para a qual elementos distintos estao a distancia 1
A escolha de uma metrica adequada a um conjunto cujos elementos sao conjuntos depende
do objetivo que queremos atingir Uma metrica bem escolhida definida num subconjunto
de P(R2) convenientemente definido tem sido muito utilizada em reconhecimento de
imagem (ver [3]) A metrica a que nos referimos e a distancia de Hausdorff denotada
nesta tese por dH Comecemos por justificar a escolha do subconjunto de P(X) onde
iremos trabalhar Dados dois subconjuntos A e B de X definimos dH(AB) como o
1
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Introducao 2
maximo de h(AB) e h(BA) sendo h(AB) o supremo das distancias de cada ponto
de A ao conjunto B E claro que a distancia de um ponto a isin A ao conjunto B e
calculada usando a funcao distancia definida em X e quando falamos em reconhecimento
de imagens o espaco metrico onde estamos a trabalhar e R2 munido da distancia euclideana
E imediato compreender que a funcao dH nao esta bem definida em P(X)timesP(X) pois
pode tomar o valor +infin Entao um primeiro cuidado consiste em impor que os conjuntos
sejam limitados Queremos tambem que dH seja uma distancia para podermos utilizar
resultados abstratos sobre espacos metricos Entao conjuntos diferentes nao devem estar
a distancia zero um do outro Olhando para a definicao dada acima e facil perceber que
em R2 um disco dista zero do conjunto que se obtem retirando um ponto ao disco Com
base nos exemplos apresentados o conjunto que vamos considerar nao e P(X) mas sim
H(X) = K sube X K e compacto e nao vazio Em H(X) dH e uma distancia que
permite num certo sentido medir quao afastados estao dois conjuntos
Esta tese encontra-se estruturada em tres capıtulos
No primeiro capıtulo sao apresentadas algumas definicoes e resultados sobre espacos
metricos (ver [2]) que serao utilizados posteriormente Apresentam-se tambem algumas
proposicoes sobre subconjuntos convexos de Rn
No segundo capıtulo apresenta-se a definicao de distancia de Hausdorff emH(X) sendo
(X d) um espaco metrico E introduzida uma definicao alternativa para esta distancia que
usa o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto E mostrado
que as duas definicoes sao equivalentes (ver [8 6]) Restrinjimo-nos depois a subconjuntos
compactos de R2 e mostramos que no caso de ambos os conjuntos serem convexos a
distancia de Hausdorff entre estes conjuntos e a mesma que entre as suas fronteiras Para
facilitar a compreensao do conceito de convergencia de sucessoes de conjuntos introduz-
-se a definicao de convergencia segundo Kuratowski que reduz o problema ao estudo
do comportamento de sucessoes de pontos pertencentes aos conjuntos Prova-se que a
convergencia de sucessoes para a distancia de Hausdorff implica a convergencia segundo
Kuratowski e que ambas as definicoes sao equivalentes quando os conjuntos sao convexos
(ver [5 4]) Apresenta-se ainda um resultado que caracteriza os subconjuntos limitados de
H(X) a custa do espaco subjacente (X d)
O terceiro capıtulo e o capıtulo onde se abordam aspetos computacionais Um primeiro
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Introducao 3
objetivo era construir uma interface grafica onde se pudessem representar e manipular de
forma simples objetos (conjuntos de pontos) de R2 permitindo representar as vizinhancas-
-ε desses conjuntos para valores de ε variando de forma ldquocontınuardquo A natureza dos
objetos com que essa interface lida e muito limitada pontos segmentos de reta e linhas
poligonais Repare-se que para este tipo de objetos a designacao alternativa de vizinhanca-
-ε salsicha-ε de Minkowsky e de facto muito sugestiva O segundo objetivo era construir
e implementar numa linguagem de programacao uma funcao que permitisse calcular a
distancia de Hausdorff de dois objetos cuja natureza e a anteriormente referida pontos
segmentos de reta e linhas poligonais O calculo da distancia de Hausdorff restringindo
a classe de objetos a polıgonos convexos e efetuada numa applet disponibilizada em [7]
apresentando uma interface muito conveniente Apesar da natureza dos objetos que nos
propusemos a tratar ser muito simples na sua maior parte sao nao convexos o que dificulta
o calculo da distancia de Hausdorff O algoritmo que esteve na base da construcao de uma
funcao que nos permite calcular a distancia de Hausdorff de dois objetos e fundamentado
numa serie de resultados enunciados e provados neste capıtulo Nao podemos terminar
sem deixar de referir que este segundo objetivo nao foi completamente atingido uma vez
que a funcao nao e por enquanto capaz de tratar todos os casos
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Capıtulo 1
Preliminares
Neste capıtulo pretende-se recordar algumas nocoes e resultados relativos a espacos
metricos Serao tambem apresentadas propriedades de subconjuntos convexos de R2
11 Algumas nocoes metricas
Nesta seccao apresentamos as definicoes e demonstramos os resultados sobre espacos
metricos que iremos utilizar ao longo da tese
Definicao 11 Uma metrica ou distancia num conjunto nao vazio X e uma funcao
d X timesX rarr R que associa a cada par ordenado (x y) um numero real d(x y) de modo
que sejam satisfeitas as seguintes condicoes para quaisquer x y z isin X
1 d(x x) = 0
2 se x 6= y entao d(x y) gt 0
3 d(x y) = d(y x)
4 d(x z) le d(x y) + d(y z)
As condicoes 1 e 2 dizem que d(x y) ge 0 e que d(x y) = 0 se e so se x = y A
condicao 3 refere que a funcao distancia e simetrica A condicao 4 chama-se desigualdade
triangular Esta propriedade no plano euclidiano resulta do facto do comprimento de um
dos lados de um triangulo nao exceder a soma dos outros dois
4
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
11 Algumas nocoes metricas 5
Definicao 12 Um espaco metrico e um par (X d) onde X e um conjunto e d e uma
metrica nesse conjunto
Ao longo desta tese quando nos referirmos a distancia entre dois pontos de Rn sem
a explicitarmos estaremos a considerar a distancia euclidiana ou seja o comprimento do
segmento de reta por eles definido Assim se x = (x1 x2 middot middot middot xn) e y = (y1 y2 middot middot middot yn)
sao dois pontos pertencentes ao espaco euclidiano Rn entao a distancia de x a y e dada
por
d(x y) =radic
(x1 minus y1)2 + (x2 minus y2)2 + middot middot middot+ (xn minus yn)2
Esta distancia e induzida pela norma euclidiana
x =radicx21 + x22 + middot middot middot+ x2n
isto e d(x y) = xminus y
Definicao 13 Seja A um subconjunto nao vazio de um espaco metrico (X d) e seja x
um ponto de X A distancia de x a A (ver Figura 11) e o ınfimo das distancias de x a
qualquer elemento de A ou seja
d(xA) = infaisinA
d(x a)
a
x
A
d(x a)
d(xA)
Figura 11 Distancia do ponto x ao conjunto A
Definicao 14 Sejam (X d) um espaco metrico x0 isin X e r gt 0 Definem-se bola aberta
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
11 Algumas nocoes metricas 6
B(x0 r) e bola fechada ou disco de centro em x0 e raio r D(x0 r) respetivamente por
B(x0 r) =x isin X d(x x0) lt r
D(x0 r) =x isin X d(x x0) le r
Definicao 15 Sejam (X d) um espaco metrico e A um subconjunto de X Entao
bull x0 diz-se um ponto interior de A se existe r gt 0 tal que B(x0 r) sube A
bull x0 diz-se um ponto aderente a A se para todo o r gt 0 se tem B(x0 r) cap A 6= empty
bull x0 diz-se um ponto de fronteira de A se x0 e aderente e nao interior de A
bull o conjunto dos pontos interiores de A designa-se por interior de A e denota-se porA
bull o conjuntos dos pontos aderentes a A designa-se por aderencia ou fecho de A e
denota-se por A
bull o conjunto dos pontos de fronteira de A designa-se por fronteira de A e denota-se
por partA
bull o conjunto A diz-se limitado se existem x isin X e r gt 0 tal que A sube B(x r)
bull o conjunto A diz-se compacto se toda a sucessao de pontos de A admite uma sub-
sucessao convergente para um ponto de A
Proposicao 16 Sejam (X d) um espaco metrico e F um subconjunto de X Entao F
e fechado se e so se para toda a sucessao de elementos de F convergente o seu limite
pertence a F
Demonstracao Suponhamos que F e fechado e seja fn minusrarrn
f sendo fn isin F para todo
o n isin N Por definicao de limite de uma sucessao
forallε gt 0 exist p isin N foralln ge p d(fn f) lt ε
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
11 Algumas nocoes metricas 7
Entao
forallε gt 0 B(f ε) cap F 6= empty
o que significa que f isin F Como F e fechado f isin F
Suponhamos agora que F nao e fechado Entao existe f isin FF Por definicao de
aderencia
foralln isin N B(f 1n) cap F 6= empty
Entao podemos escolher fn isin B(f 1n) cap F Esta sucessao (fn)n verifica
foralln isin N d(fn f) lt 1n
pelo que fn minusrarrn
f Mas f isin F o que conclui a demostracao
Teorema 17 Sejam (X d) um espaco metrico compacto e F um subconjunto fechado
de X Entao F e compacto
Demonstracao Seja (fn)n uma sucessao de elementos de F Como X e compacto esta
sucessao admite uma subsucessao (fnk)k convergente para um elemento f isin X Como F
e fechado pela Proposicao 16 f isin F Entao F e compacto
Proposicao 18 Sejam (X d) um espaco metrico e A um subconjunto nao vazio de X
Entao a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
e contınua
Demonstracao Comecemos por observar que
forallx y z isin X |d(x z)minus d(y z)| le d(x y)
uma vez que pela desigualdade triangular temos que
forallx y z isin X d(x z) le d(x y) + d(y z) e d(y z) le d(y x) + d(x z)
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
11 Algumas nocoes metricas 8
Para mostrar a continuidade de Ψ em x0 isin X temos de verificar que
forallε gt 0 exist δ gt 0 forallx isin X d(x x0) lt δ rArr |d(xA)minus d(x0 A)| lt ε (11)
Observe-se que
foralla isin A d(xA) le d(x a)
Por outro lado como d(x0 A) = infaisinAd(x0 a) pela definicao de ınfimo
foralln isin N exist an isin A d(x0 A) ge d(x0 an)minus 1n
Entao
d(xA)minus d(x0 A) le d(x an)minus(d(x0 an)minus 1
n
)le d(x x0) + 1
n
e como n e qualquer
d(xA)minus d(x0 A) le d(x x0)
Analogamente se mostra que
d(x0 A)minus d(xA) le d(x0 x)
e portanto como |d(xA)minus d(x0 A)| le d(x x0) basta tomar δ = ε em (11)
Proposicao 19 Seja F um subconjunto fechado nao vazio de Rn Dado x isin Rn existe
f0 isin F tal que
d(x F ) = d(x f0)
Demonstracao Como d(x F ) = inffisinFd(x f) por definicao de ınfimo
forallk isin N exist fk isin F d(x F ) ge d(x fk)minus 1k
Entao como d(x F ) le d(x fk) temos que
forallk isin N |d(x F )minus d(x fk)| le 1k
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
12 Conjuntos convexos 9
pelo que d(x fk) minusrarrk
d(x F )
Por outro lado a sucessao (fk)k e limitada pelo que admite uma subsucessao (fkj)j
convergente para algum f0 isin X Mas como F e fechado f0 isin F
Proposicao 110 Sejam F um subconjunto fechado nao vazio de Rn e x isin F Seja
f0 isin F tal que d(x F ) = d(x f0) Entao f0 isin partF
Demonstracao Suponhamos que f0 isin partF Entao existe r gt 0 tal que B(f0 r) sube F
Considere-se a reta que passa por x e f0 Entao o ponto f1 = f0 + r2
xminusf0xminusf0 pertence a
B(f0 r) uma vez que f1 minus f0 = r2lt r pelo que f1 isin F
Por outro lado notando que xminus f0 ge r tem-se que
xminus f1 =∥∥∥xminus f0 minus r
2xminusf0xminusf0
∥∥∥ =∥∥∥(xminus f0 minus r
2
)xminusf0xminusf0
∥∥∥= xminus f0 minus
r
2lt d(x f0)
o que e uma contradicao Entao f0 isin partF
12 Conjuntos convexos
Nesta seccao apresentamos alguns resultados sobre subconjuntos convexos e envolventes
convexas de subconjuntos de Rn
Definicao 111 Um subconjunto A de Rn diz-se convexo se
forallx y isin A forallλ isin [0 1] λx+ (1minus λ)y isin A
Mais informalmente um subconjunto de Rn e um convexo se contiver os segmentos de reta
que unem dois quaisquer dos seus pontos
Denotamos o segmento de reta definido pelos pontos x e yλx+(1minusλ)y 0 le λ le 1
por [x1 x2]
Exemplo 112 A Figura 12 apresenta os esbocos de um subconjunto nao convexo e de
um subconjunto convexo de R2
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
12 Conjuntos convexos 10
A B
Figura 12 O conjunto A e nao convexo e o conjunto B e convexo
Comecemos por mostrar um resultado sobre subconjuntos convexos limitados de Rn
Proposicao 113 Sejam A um subconjunto convexo limitado de Rn e a isinA Entao
qualquer reta que passa por a interseta partA em dois pontos
Demonstracao Podemos supor sem perda de generalidade que A e fechado Seja
r uma reta que passa por a e escolhamos v um vetor diretor da reta Se denotarmos
r+ = a+ tv t isin R+0 entao r+ capA e um fechado por ser a intersecao de dois fechados
e e limitado porque A e limitado Entao r+ capA = [a a+ t0v] para algum t0 isin R+ visto
que A e convexo e fechado E imediato concluir que a+ t0v isin partA Utilizando a semirreta
rminus = a+ tv t isin Rminus0 encontramos um segundo ponto em partA cap rminus
Definicao 114 Dado um conjunto A sube Rn chama-se envolvente convexa de A ao con-
junto
E(A) =
msumi=1
λiai ai isin A λi isin R+0
msumi=1
λi = 1m isin N
Definicao 115 Dados um conjunto A sube Rn e ε gt 0 define-se A(ε) =⋃aisinA
D(a ε)
Este conjunto designa-se por salsicha-ε de Minkowsky ou vizinhanca-ε de A e sera utilizado
com frequencia ao longo desta tese
Proposicao 116 Sejam A e B subconjuntos de Rn Entao verificam-se as seguintes
propriedades
1 E (A) e o menor convexo (no sentido de inclusao) que contem A
2 Se A sube B entao E (A) sube E (B)
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
12 Conjuntos convexos 11
3 Se A e convexo fechado e limitado entao E (partA) = A
4 Se A e convexo e ε gt 0 entao A(ε) e convexo
5 Se A e convexo fechado e limitado e ε gt 0 entao A(ε) = E (partA) (ε)
Demonstracao
1 Comecemos por verificar que E (A) e convexo
Dados m k isin N sejam x =msumi=1
λiai e y =ksumj=1
microjbj sendo λi microj isin R+0 ai bj isin A
i = 1 m j = 1 k emsumi=1
λi =ksumj=1
microj = 1
Podemos supor que m = k tomando por exemplo no caso em que m lt k λi = 0
para i = m+ 1 k e ai = a isin A
Seja α isin [0 1] Entao
αx+ (1minus α) y = αksumi=1
λiai + (1minus α)ksumi=1
microibi
=ksumi=1
αλiai +ksumi=1
(1minus α)microibi
=2ksumi=1
γici
onde γi = αλi e ci = ai se i isin 1 k e γi = (1 minus α)microiminusk e ci = biminusk se
i isin k + 1 2k
Como
2ksumi=1
γi =ksumi=1
αλi +2ksum
i=m+1
(1minus α)microiminusk
= αksumi=1
λi + (1minus α)ksumi=1
microi = α + (1minus α) = 1
concluımos que αx+ (1minus α) y isin E (A)
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
12 Conjuntos convexos 12
Por outro lado qualquer convexo que contenha A contem E (A) o que mostra que
E (A) e o menor convexo que contem A
2 Esta propriedade obtem-se diretamente da definicao de envolvente convexa
3 SeA = empty o resultado e imediato uma vez que partA = A Podemos entao supor que
A 6= empty
Como A e fechado entao partA sube A Pela propriedade 2 concluımos que E (partA) esta
contido em E (A) Mas como A e convexo e pela propriedade 1 E (A) e o menor
convexo que contem A entao E (A) = A Mostramos entao que E (partA) sube A
Vejamos a inclusao contraria Seja a isin ApartA e seja r uma reta qualquer que passa
por a Como A e limitado e convexo pela Proposicao 113 existem x1 x2 isin rcappartA
Entao a isin [x1 x2] pelo que a isin E (partA)
4 Sejam x1 x2 isin A(ε) =⋃aisinA
D (a ε) Entao existem a1 a2 isin A tais que x1 isin D (a1 ε)
e x2 isin D (a2 ε) Pretendemos mostrar que λx1 +(1minus λ)x2 isin A(ε) para λ isin [0 1]
Como A e convexo λa1 + (1minus λ)a2 isin A
Alem disso
λx1 + (1minus λ)x2 minus (λa1 + (1minus λ)a2) = λ(x1 minus a1) + (1minus λ)(x2 minus a2)
le λ x1 minus a1+ (1minus λ) x2 minus a2
le λε+ (1minus λ)ε = ε
Entao λx1 + (1minus λ)x2 isin D (λa1 + (1minus λ)a2 ε) sube A(ε)
5 Como A e convexo fechado e limitado pela propriedade 3 E(partA) = A Entao
E(partA)(ε) = A(ε)
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Capıtulo 2
Distancia de Hausdorff e salsicha de
Minkowsky
Considerando um espaco metrico (X d) e o conjunto dos seus subconjuntos P(X)
podemos pensar como definir uma distancia num subconjunto de P(X) A distancia de
Hausdorff que sera explicada na seccao 21 e uma forma natural de o fazer Para que esta
funcao seja uma distancia e necessario restringirmo-nos aos subconjuntos compactos de
X
Neste capıtulo apresentamos duas definicoes alternativas para a distancia de Hausdorff
usando uma delas o conceito de salsicha-ε de Minkowsky ou vizinhanca-ε de um conjunto
Serao provados alguns resultados envolvendo a distancia de Hausdorff de subconjun-
tos convexos fechados e limitados de R2 Sera ainda estabelecida uma relacao entre a
convergencia de sucessoes de convexos fechados limitados de R2 e a convergencia destes
conjuntos segundo Kuratowski
21 A distancia de Hausdorff
Para tentar motivar o conceito de distancia de Hausdorff vamos considerar a seguinte
situacao sejam A e B duas populacoes algures num territorio onde esta definida uma
distancia d A distancia de um habitante a pertencente a A a B e a distancia de a ao
13
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 14
seu vizinho mais proximo em B ou seja infbisinB
d(a b)1 Do mesmo modo a distancia de um
habitante b pertencente a B a A e a distancia de b ao seu vizinho mais proximo em A
ou seja infaisinA
d(b a)
A ldquodistanciardquo do conjunto A ao o conjunto B e definida por
h(AB) = supd(aB) a isin A
(21)
e a ldquodistanciardquo do conjunto B ao conjunto A por
h(BA) = supd(b A) b isin B
Nota 21 Observamos que h nao e uma distancia pois em geral h(AB) 6= h(BA)
como e ilustrado na Figura 21
h(AB)
h(BA)
A B
Figura 21 Exemplo em que h(AB) 6= h(BA)
Para definirmos a distancia entre as duas populacoes devemos tomar a maior distancia
possıvel entre um habitante de A e o conjunto dos habitantes de B ou seja h(AB) e
tambem a maior distancia entre um habitante de B e o conjunto dos habitantes de A isto
e h(BA) O maior destes dois numeros seria o que poderıamos definir como a distancia
de Hausdorff entre A e B
Exemplo 22 Consideremos em R2 os conjuntos A e B representados por uma reta e
um segmento de reta respetivamente (ver Figura 22) Observemos que h(AB) = +infin
pelo que a distancia de Hausdorff entre os dois conjuntos e +infin
Este exemplo sugere-nos que devemos considerar conjuntos limitados para termos a
garantia de que a distancia que vamos definir nao e infinita
1Note-se que neste caso em que estamos a considerar um conjunto finito o ınfimo e mınimo
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 15
B
A
Figura 22 Dois conjuntos cuja distancia de Hausdorff e infinita
Exemplo 23 Consideremos em R2 os conjuntos A = [0 1] times [0 1] e B =]0 1]times]0 1]
Entao h(AB) = h(BA) = 0 mas A e B nao sao iguais
Este exemplo permite-nos perceber que h(AA) = h(AA) = 0 Para que a nossa definicao
seja uma distancia devemos considerar apenas conjuntos fechados
Recordemos que os subconjuntos limitados e fechados de R2 sao precisamente os
subconjuntos compactos
Vamos agora introduzir a definicao de distancia de Hausdorff num subconjunto conve-
nientemente escolhido do conjunto das partes de um espaco metrico (X d)
Definicao 24 Dado (X d) um espaco metrico seja
H(X) =K sube X K e compacto e nao vazio
Dados dois conjuntos AB isin H(X) define-se distancia de Hausdorff entre A e B como
dH(AB) = max
supxisinA
d(xB) supxisinB
d(xA)
(22)
Sabemos pela Proposicao 19 que se A e fechado d(xA) = d(x a) para algum
a isin A Por outro lado pela Proposicao 18 a funcao
Ψ X minusrarr R
x 7minusrarr d(xA)
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 16
e uma funcao contınua Como B e compacto
supxisinB
d(xA) = sup
Ψ(x) x isin B
= Ψ(b)
para algum b isin B Entao
supxisinB
d(xA) = d(a b)
Mostramos entao que se A e B sao compactos dH(AB) lt +infin
Nota 25 E importante nao confundir a distancia de Hausdorff entre dois conjuntos A e
B com a distancia entre os conjuntos A e B usualmente definida num espaco metrico A
distancia entre dois conjuntos A e B define-se por
d(AB) = infd(x y) x isin A y isin B
Observe-se que d nao e uma distancia em H(X)
Exemplo 26 Consideremos em R2 A = [0 1]times[0 2] e B = [2 3]times[0 1] (ver Figura 23)
A
B
1 2 3
1
2
d(AB) = 1
dH(AB) =radic5
Figura 23 A distancia usual e a distancia de Hausdorff entre A e B sao diferentes
E facil verificar que dH(AB) =radic
5 e que d(AB) = 1
Vejamos ainda um outro exemplo
Exemplo 27 Consideremos A =
(1 1) (1 2) (2 1)
e B =
(2 2) (3 2) (3 3)
como
mostra a Figura 24 Como se pode verificar h(AB) =radic
2 e h(BA) =radic
5 por conse-
guinte dH(AB) = maxradic
2radic
5
=radic
5
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 17
A
B
1 2 3
1
2
3
Figura 24 Distancia de Hausdorff entre os conjuntos A e B
Proposicao 28 Seja (X d) um espaco metrico Entao a distancia de Hausdorff e uma
metrica em H(X)
Demonstracao Recordemos a definicao de h(AB) dada em (21)
1 E imediato concluir que para todo A isin H(X) se tem dH(AA) = 0
2 forall AB isin H(X) A 6= B rArr dH(AB) gt 0
Sejam AB isin H(X) Como A e B sao compactos e nao vazios entao existem
x isin A e y isin B tais que h(AB) = d(x y) Como d e uma metrica em X entao
d(x y) ge 0 e portanto dH(AB) ge 0 Se A 6= B entao existe x isin A tal que x isin B
donde h(AB) 6= 0 porque A e B sao fechados Consequentemente dH(AB) 6= 0
3 E imediato concluir que a funcao dH e simetrica
4 forall ABC isin H(X) dH(AB) le dH(AC) + dH(CB)
Recorde-se que AB e C sao compactos e comecemos por verificar que
h(AB) le h(AC) + h(BC)
Observe-se que dados a isin A e b isin B temos que
forallc isin C d(a b) le d(a c) + d(c b)
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 18
Entao
forallc isin C minbisinB
d(a b) le minbisinB
(d(a c) + d(c b)
)= d(a c) + min
bisinBd(c b)
o que significa que para todo o c isin C temos que d(aB) le d(a c) + d(c B) Mas
como d(c B) le h(CB) que nao depende de c concluımos que
d(aB) le mincisinC
d(a c) + h(CB)
o que implica que
d(aB) le d(a C) + h(CB) le h(AC) + h(CB)
Concluımos entao que
h(AB) = maxaisinA
d(aB) le h(AC) + h(CB)
Analogamente se mostra que
h(BA) le h(BC) + h(CA)
Entao
dH(AB) = maxh(AB) h(BA)
le max
h(AC) + h(CB) h(BC) + h(CA)
le max
h(AC) h(CA)
+ max
h(BC) h(CB)
= dH(AC) + dH(CB)
Generalizamos agora a definicao de salsicha-ε de Minkowski que ja foi introduzida no
Capıtulo 1 (Definicao 115) para subconjuntos de Rn
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 19
Definicao 29 Sejam (X d) um espaco metrico e ε gt 0 A salsicha-ε de Minkowski ou
vizinhanca-ε de um subconjunto E de X e o conjunto
E (ε) =⋃xisinE
D (x ε) (23)
Observe-se que como estamos a considerar apenas conjuntos compactos supaisinA
d (aB) le
ε se e so se A sube B (ε) Assim podemos introduzir uma definicao que mostraremos ser
equivalente a definicao de distancia de Hausdorff
dlowastH (AB) = infε gt 0 A sube B (ε) e B sube A (ε)
(24)
Vejamos um exemplo do calculo de dlowastH (ver Figura 25)
ε
ε
Figura 25 Exemplo de calculo da distancia de Hausdorff usando a salsicha de Minkowski
Proposicao 210 A funcao dlowastH H(X)timesH(X) minusrarr R definida em (24) e a distancia de
Hausdorff dH (ver Definicao 24)
Demonstracao Sejam AB isin H(X) e denote-se α = dlowastH(AB) Vamos mostrar que
α = dH(AB)
Como dado δ gt 0 se tem dlowastH(AB) lt α+ δ entao pela definicao de dlowastH temos que
A sube B(α + δ) e B sube A(α + δ) (25)
e como dlowastH gt αminus δ entao
A 6sube B(αminus δ) ou B 6sube A(αminus δ) (26)
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 20
Por (25) concluımos que dado a isin A existe bδ isin B tal que d(a bδ) le α + δ e tambem
que dado b isin B existe aδ isin A verificando d(aδ b) le α + δ Concluımos assim que
foralla isin A forallb isin B d(aB) le α + δ e d(b A) le α + δ
e como δ e um numero positivo arbitrario fazendo δ tender para zero obtemos que
foralla isin A forallb isin B d(aB) le α e d(b A) le α
o que imediatamente implica que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
le α = dlowastH(AB)
Por outro lado de (26) concluımos que dado δ gt 0 existe aδ isin A tal que para todo
o b isin B temos que d(aδ b) gt α minus δ ou entao existe bδ isin B tal que para todo o a isin A
temos que d(bδ a) gt αminus δ Entao para todo δ gt 0
supaisinA
d(aB) ge d(aδ B) ge αminus δ ou supbisinB
d(b A) ge d(bδ A) ge αminus δ
o que significa que
dH(AB) = max
supaisinA
d(aB) supbisinB
d(b A)
ge αminus δ
= dlowastH(AB)minus δ
Como δ e qualquer numero positivo (pequeno) fazendo δ convergir para zero concluımos
que dH ge dlowastH
Ja mostramos na Proposicao 28 que a distancia de Hausdorff e uma metrica em H(X)
No entanto apresentamos uma demonstracao da desigualdade triangular usando o conceito
de salsicha de Minkowsky Vejamos entao que dados tres conjuntos quaisquer A B e C
pertencentes a H(X) estes verificam a desigualdade
dH(AC) le dH(AB) + dH(BC)
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
21 A distancia de Hausdorff 21
Mostremos que dado um numero real positivo ε temos que
ε gt dH(AB) + dH(BC)rArr ε gt dH(AC) (27)
Consideremos α = dH(AB) + dH(BC) Entao
forallδ gt 0 α + δ gt α = dH(AB) + dH(BC)
Supondo que a condicao (27) e verdadeira podemos concluir que
forall δ gt 0 α + δ gt dH(AC)
Como δ e um numero positivo arbitrario fazendo δ convergir para zero obtemos que
α ge dH(AC) o que conclui a prova desde que mostremos (27) Para isso seja ε gt
dH(AB)+dH(BC) e escolhamos ε1 e ε2 dois numeros reais positivos tais que ε = ε1+ε2
e
ε1 gt dH(AB) (28)
ε2 gt dH(BC) (29)
Mostremos que ε gt dH(AC)
Por definicao da salsicha de Minkowski e por (28) temos A sube B(ε1) e B sube A(ε1) e
por (29) temos B sube C(ε2) e C sube B(ε2)
Aplicando o conceito de salsicha de Minkowski a B obtemos
B(ε2) sube A(ε1 + ε2) e B(ε1) sube C(ε1 + ε2)
Assim conclui-se que A sube B(ε1) sube C(ε1 + ε2) Do mesmo modo C sube B(ε2) sube
A(ε1 + ε2) Por conseguinte
A sube C(ε1 + ε2) e C sube A(ε1 + ε2)
o que mostra que dH(AC) lt ε1 + ε2 = ε
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
22 Convergencia de sucessoes de subconjuntos de R2 22
22 Convergencia de sucessoes de subconjuntos de R2
Consideremos em R2 o disco centrado na origem e raio R gt 0 D = D(0 R) Seja
H(D) =K sube D K e fechado limitado e nao vazio
2
Esta seccao e dedicada ao estudo de sucessoes de subconjuntos convexos contidos em D
Relacionar-se-a a convergencia de sucessoes para a distancia de Hausdorff com a definicao de
convergencia segundo Kuratowski que sera introduzida nesta seccao Esta definicao reduz
o estudo da convergencia de sucessoes de conjuntos ao estudo da convergencia de sucessoes
nesses conjuntos Sera tambem mostrado um resultado que caracteriza os subconjuntos
limitados de H(D)
Proposicao 211 Se K1 e K2 sao conjuntos convexos de H(D) entao
dH(K1 K2) = dH(partK1 partK2)
Demonstracao Podemos supor que K1 6= K2 uma vez que o caso K1 = K2 e imediato
Recordemos que dH(K1 K2) = maxh(K1 K2) h(K2 K1)
estando h(AB) defi-
nido em (21) Assumamos que dH(K1 K2) = h(K1 K2) e sejam x1 isin K1 e x2 isin K2
tais que h(K1 K2) = maxxisinK1
d(xK2) = d(x1 x2) Sabemos pela Proposicao 110 que
como K2 e fechado x2 isin partK2 Suponhamos que x1 isinK1 Entao existe r gt 0 tal que
B(x1 r) sube K1 Considere-se a reta s que une x1 a x2 E claro que para todo o x isin K1caps
d(xK2) = d(x x2) Se tomarmos x0 = x1 + r2x1minusx2x1minusx2 entao x0 isin K1 uma vez que
x0 minus x1 = r2
e B(x1 r) sube K1 Entao
d(x0 K2) = d(x0 x2) = d(x1 x2) + r2gt d(x1 K2)
o que e absurdo Conclui-se assim que x1 isin partK1
Exemplo 212 Como se pode observar na Figura 26 dH(K1 K2) = 3 e dH(partK1 partK2) =
2 Observe-se que K1 = D(0 1) e convexo mas K2 =
(x y) isin R2 x2 + y2 = 9
nao e
2Para simplificar estamos a considerar apenas os compactos contidos num disco fixado de R2
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
22 Convergencia de sucessoes de subconjuntos de R2 23
K1
K2
1 3
Figura 26 Dois conjuntos um nao convexo em que a distancia de Hausdorff e realizadano interior de um dos conjuntos
convexo
Definicao 213 Sejam (An)n uma sucessao de subconjuntos de R2 e A um subconjunto
de R2 Dizemos que (An)n converge para A no sentido de Kuratowski se
1 forallx isin A existxn isin An xn minusrarrn
x
2 Se xnjisin Anj
e xnjminusrarrjx entao x isin A
Vejamos um exemplo
Exemplo 214 Sejam An = D(0 1 minus 1
n
)e A = D(0 1) Vejamos que (An)n converge
para A segundo Kuratowski
1 Dado a isin A seja an =(1minus 1
n
)a Entao an isin An e an minus a = 1
na minusrarr
n0
2 Sejam anjisin Anj
tais que anjminusrarr a Como a funcao norma e contınua obtemos∥∥anj
∥∥ le 1minus 1njminusrarrj
1 entao a isin A
Observe-se que a sucessao (An)n tambem converge para A em (H(D) dH)
Proposicao 215 Seja A um subconjunto de H(D) Entao A e limitado se e so se⋃AisinA
A
e limitado em R2
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
22 Convergencia de sucessoes de subconjuntos de R2 24
Demonstracao Comecemos por supor que A e limitado Entao existem K isin H(D) e
r gt 0 tais que A esta contido no disco de centro em K e raio r (para a metrica dH) isto
e
forallA isin A dH(AK) le r
Em particular usando a definicao de distancia de Hausdorff que utiliza as salsichas de
Minkowsky obtemos⋃AisinA
A sube K(r) Mas como o conjunto K e compacto entao K(r) e
limitado em R2
Suponhamos agora que⋃AisinA
A e limitado em R2 Entao existe r gt 0 tal que⋃AisinA
A sube
D(0 r) Em particular chamando F = D(0 r) temos
forallA isin A A sube⋃AisinA
A sube F sube F (2r)
Por outro lado se a isin A entao a isin D(0 r) pelo que dado x isin D(0 r) pela desigualdade
triangular temos que d(x a) le 2r Mas entao
F = D(0 r) sube D(a 2r) sube A(2r)
Conclui-se assim que
dH(AF ) = dH (AD(0 r)) le 2r
o que mostra que A e limitado
Vamos agora estudar a relacao entre as duas nocoes de convergencia usando a metrica
dH ou a definicao de Kuratowski
Teorema 216 Suponhamos que (An)n e uma sucessao de conjuntos de (H(D) dH) con-
vergente para um conjunto A Entao (An)n converge segundo Kuratowski para A
Demonstracao Comecemos por mostrar 1
Dado a isin A como A e fechado existe an isin An tal que d(aAn) = d(a an) Mas
como d(aAn) le dH(AAn) minusrarrn
0 entao an minusrarrn
a
Mostremos agora 2
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
22 Convergencia de sucessoes de subconjuntos de R2 25
Seja anjisin Anj
tal que anjminusrarrj
a Suponhamos que a isin A Como A e compacto
existe ρ gt 0 tal que D(a ρ) cap A(ρ) = empty Como An minusrarrn
A em H(D) por definicao de
limite para este ρ existe n0 isin N tal que se n ge n0 entao An sube A(ρ) o que contradiz o
facto de anjminusrarrja Entao a isin A
Observe-se que a convergencia segundo Kuratowski e mais facil de compreender e mais
intuitiva que a convergencia emH(D) com a metrica de Hausdorff uma vez que transforma
o problema de estudar a convergencia de sucessoes de conjuntos no estudo da convergencia
de sucessoes de pontos de R2
Teorema 217 Seja (Kn)n uma sucessao de subconjuntos de H(D) e suponhamos que
(Kn)n converge segundo Kuratowski para um conjunto K Entao (Kn)n converge para K
no espaco metrico H(D)
Demonstracao Suponhamos que (Kn)n nao converge para K em (H(D) dH) Por
definicao de limite
exist ε gt 0 forallj isin N existnj ge j dH(Knj K) ge ε
Observemos que a sucessao (nj)j pode ser escolhida estritamente crescente Para cada
j isin N temos que K Knj(ε) ou Knj
K(ε) Uma das duas condicoes acontece para
um conjunto infinito de ındices Podemos supor para simplificar notacoes e sem perda de
generalidade que essa condicao acontece para todos os ındices
Suponhamos que temos K Knj(ε) para todo o j isin N Entao
forallj isin N exist zj isin KKnj(ε)
pelo que d(zj Knj
)ge ε Como (zj)j e uma sucessao no conjunto compacto K existe
uma subsucessao zjk minusrarrk
x isin K (na distancia usual de R2) Mas
d(zjk Kjk
)le d(zjk x) + d(xKjk)
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
22 Convergencia de sucessoes de subconjuntos de R2 26
e entao para k suficientemente grande
d (xKjk) ge d (zjk Kjk)minus d(zjk x) ge εminus ε2
= ε2
Como (Kn)n converge segundo Kuratowski para K pela condicao 1 da Definicao 213
existe xn isin Kn tal que xn minusrarrn
x Mas entao
d (xKjk) le d (x xjk) minusrarrn
0
o que contraria o facto de d (xKjk) ser maior ou igual a ε2
Suponhamos agora que se verifica Knj K(ε) para todo o j isin N Entao
forallj isin N exist zj isin KnjK(ε)
Portanto
forallj isin N d(zj K) ge ε
Como (zj)j e uma sucessao de pontos do conjunto compacto D(0 R) entao esta
sucessao admite uma subsucessao (zjk)k convergente para z isin D(0 R) Uma vez que
Kjk minusrarrk
K segundo Kuratowski como zjk isin Kjk e zjk minusrarrk
z pela condicao 2 da De-
finicao 213 z isin K Mas isto e absurdo porque
d(zK) = limkd(zjk K) ge ε
Conclui-se assim que (Kn)n converge para K em (H(D) dH)
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Capıtulo 3
Distancia de Hausdorff - uma
abordagem computacional
Neste capıtulo sao abordados os aspetos computacionais deste trabalho Existem duas
vertentes na abordagem computacional que se interligam e complementam o calculo e
a visualizacao O conceito de distancia de Hausdorff e em certa medida um conceito
contraintuitivo por isso dispormos de um ambiente grafico em que se possam manipular
os objetos e explorar situacoes relacionadas com o conceito e um aspeto que deve ser
valorizado Definir um algoritmo e implementa-lo de modo a automatizar o calculo da
distancia de Hausdorff de dois conjuntos mesmo quando estamos limitados a conjuntos
ldquomuito simplesrdquo revelou-se um desafio interessante e so parcialmente conseguido A escolha
da ferramenta computacional foi feita de modo a poder responder a estes dois desafios e
ter potencial para resolver problemas que a partida nao estavam previstos O sistema
Mathematica encaixa de forma natural nestas condicoes
Os formatos tradicionais de tese limitam a forma de apresentar os aspetos graficos o
que pode ter o efeito de desvalorizar essa vertente Em papel a questao e incontornavel pelo
que as ilustracoes sao apenas imagens Na versao em formato pdf tentamos evidenciar o
aspeto grafico embebendo no documento algumas animacoes As animacoes foram criadas
em flash (swf) usando a capacidade do Mathematica para exportar para este formato a
nao ser no caso em que se pretende ilustrar a possibilidade de manipular os objetos onde
se fez a gravacao a partir do monitor As figuras que tem flash embebido estao assinaladas
27
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
31 Uma interface grafica dinamica 28
na legenda com o sımbolo + O visualizador do ficheiro pdf tera que ter capacidade para
apresentar o conteudo vıdeo embebido no ficheiro e de interpretar javascripts
Para a leitura desta tese e deste capıtulo em particular recomendamos o suporte em
computador em vez do suporte em papel
31 Uma interface grafica dinamica
A construcao de uma interface grafica em que o utilizador possa manipular os objetos
com o ldquoratordquo era um objetivo que nos propunhamos atingir neste trabalho Essa tarefa
foi muito simplificada recorrendo as capacidades de interatividade dinamica que o sistema
Mathematica possui De facto para conseguir atingir o objetivo de forma muito satis-
fatoria nem foi preciso recorrer a escrita de linhas de codigo com alguma complexidade
usando as diversas funcoes que sao disponibilizadas pelo Mathematica para desenhar uma
interface grafica com capacidades de interatividade A funcao Manipulate permite de
forma simples construir uma estrutura perfeitamente adequada a finalidade que tınhamos
em mente
Para poder confirmar o que acabamos de dizer a interface que e apresentada na Fi-
gura 31 e obtida com as instrucoes seguintes1
Manipulate[obj1=Take[pts3]obj2=Drop[pts3]
Graphics[ColorData[HTMLTurquoise]Salsicha[obj1eps1]
ColorData[HTMLAquamarine]Salsicha[obj2eps2]Black
Representa[obj1]Representa[obj2]PlotRange-gt4ImageSize-gt400400]
eps10Eps104Sqrt201Appearance-gtLabeled
eps20Eps204Sqrt201Appearance-gtLabeled
pts-10012002-3-333Locator
LocatorAutoCreate-gt3Infinity]
A Figura 31 na versao digital deste documento permite aceder a uma animacao onde
se exemplifica a interatividade que a interface produzida apresenta
1A apresentacao do codigo pretende apenas exemplificar a simplicidade Nele sao invocadas funcoesque serao mencionadas posteriormente cujo codigo consta do Anexo
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 29
Eps1 1
Eps2 1
Figura 31 Exemplo da interface grafica interativa +
32 Caracterizacao da funcao Eps
Comecamos por fixar algumas notacoes e referir algumas liberdades de notacao a que
nos permitimos
Nesta seccao os conjuntos considerados sao subconjuntos compactos de R2 Usaremos
letras maiusculas para representar pontos e conjuntos de pontos
Iremos representar da mesma forma por uma letra maiuscula um ponto e o conjunto
singular formado por esse ponto
Um segmento de reta sera identificado pelas suas extremidades o segmento de reta
definido pelos pontos A e B sera denotado por [AB]
Dada um sequencia de n pontos A1 An n gt 1 a linha poligonal definida por
essa sequencia de pontos correspondente a uniao dos segmentos de reta [AiAi+1] i =
1 n minus 1 sera denotada por [A1 An] Observe-se que nesta definicao uma linha
poligonal podera corresponder a um segmento de reta
Representaremos por Funcao a implementacao da funcao ldquoFuncaordquo no sistema Mathe-
matica
Dados dois conjuntos X e Y o menor valor de ε ge 0 cuja vizinhanca-ε de X contem
Y sera denotado por εXY ie εXY = minε isin R+
0 X(ε) supe Y
O objetivo e construir2 uma funcao Eps tal que dados conjuntos X e Y de determinada
2Construir no sentido de implementar no sistema Mathematica
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 30
forma Eps[X Y ] = εXY Ambicionavamos que qualquer um dos argumentos da funcao
Eps pudesse ser um ponto ou uma linha poligonal no plano mas ficamos aquem desse
objetivo
Os argumentos da funcao Eps sao muitas vezes referidos como objetos
Nesta seccao sao apresentados alguns resultados que permitem definir e justificar o
algoritmo desenhado para a funcao Eps O primeiro desses resultados e um lema generico
uma vez que invoca um conjunto que nao e necessariamente um ponto ou uma linha
poligonal Este lema sera usado na demonstracao de alguns dos lemas subsequentes
Lema 31 Seja X um conjunto compacto3 nao vazio e P um ponto Entao
εXP = d(PX)
Demonstracao Como P isin X(εXP ) existe um ponto A isin X tal que P isin D(A εXP )
Conclui-se entao que d(PX) le εXP
Por outro lado qualquer que seja B isin X d(BP ) ge εXP logo d(PX) ge εXP
Conclui-se assim que d(PX) = εXP
A situacao mais elementar e aquela em que cada um dos argumentos e um ponto
Lema 32 Sejam A e B dois pontos Entao
εAB = εBA = d(AB)
Demonstracao Este resultado decorre do Lema 31 considerando P = A e X = B ou
P = B e X = A
A funcao Eps no caso em que os argumentos sao dois pontos limita-se a calcular a
norma do vetor definido por esses pontos
A Figura 32 apresenta um exemplo de aplicacao da funcao Eps quando cada um dos
argumentos e um ponto
O proximo lema permite-nos definir a funcao Eps quando o primeiro argumento e um
ponto mas o segundo e uma linha poligonal
3O resultado ainda e valido se substituirmos compacto por fechado No entanto nesta seccao estamosapenas a considerar conjuntos compactos
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 31
A = H0 0L
B = H1 1L
paraA B = paraB A = 2
Figura 32 Sendo A e B pontos Eps[AB] = Eps[BA] = d(AB) +
Lema 33 Dados um ponto A e uma linha poligonal [B1 Bn] n gt 1
εA[B1Bn] = maxi=1n
d(ABi)
Demonstracao Como A(εA[B1Bn]) contem B1 Bn isso implica que εA[B1Bn] ge
maxi=1n
d(ABi) Uma vez que A(ε) e convexo se P e Q sao pontos tais que PQ sube A(ε)
entao [PQ] sube A(ε) Conclui-se assim que εA[B1Bn] = maxi=1n
d(ABi)
A funcao Eps tera de determinar o maximo das normas dos vetores definidos pelo ponto
correspondente ao primeiro argumento e pelos pontos que definem a linha poligonal dada
como segundo argumento
A Figura 33 apresenta tres exemplos em que a funcao Eps e invocada com um ponto
como primeiro argumento e com o segundo argumento sendo uma linha poligonal definida
por dois tres e quatro pontos
A = H0 0L
B1 = H-2 -2L
B2 = H-1 1L
paraAB1 B2D = 2 2
(a) Ponto e linha poligonal for-mada por dois pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
paraAB1 B2 B3D = 2
(b) Ponto e linha poligonal for-mada por tres pontos
A = H0 0L
B1 = H-1 1L
B2 = H-1 -1L
B3
=H2
0L
B4 = H2 -2L
paraAB1 ordm B4D = 2 2
(c) Ponto e linha poligonal for-mada por quatro pontos
Figura 33 Exemplos de aplicacao da funcao Eps [ptlp] +
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 32
Analisemos agora a situacao inversa ou seja considerando como primeiro argumento
uma linha poligonal e como segundo argumento um ponto
Lema 34 Dados uma linha poligonal [A1 An] n gt 1 e um ponto B
ε[A1An]B = mini=1nminus1
d(B [AiAi+1])
Demonstracao Usando o Lema 31 com P = B e X = [A1 An] conclui-se que
ε[A1An]B = d(B [A1 An]
)= min
i=1nminus1d(B [AiAi+1]
)
Para tratar este caso foram definidas duas instancias da funcao Eps separando a si-
tuacao em que a linha poligonal e definida por dois pontos ou seja e um segmento de reta
da situacao em que a linha poligonal e definida por tres ou mais pontos No primeiro caso
a funcao Eps determina a distancia do ponto ao segmento de reta situacao exemplificada
na Figura 34 Na outra situacao considerando uma linha poligonal definida por n pontos
com n ge 3 a funcao Eps invoca n minus 1 vezes a instancia anteriormente referida de Eps
de acordo com o Lema 34 e extrai o mınimo dos n minus 1 valores obtidos Esta situacao e
exemplificada na Figura 35
A1 = H-2 -1L A2 =
1
2 -1
B = H0 0L
paraA1 A2DB = 1
(a) A distancia de B a [A1A2] erealizada num ponto pertencenteao pe da perpendicular
A1 = H-2 0L A2 = H0 0L
B = H1 1L
paraA1 A2DB = 2
(b) A distancia de B a [A1A2]e realizada num dos extremos dosegmento de reta
Figura 34 Exemplos de aplicacao da funcao Eps [segpt] +
Considere-se agora uma situacao em que nenhum dos argumentos se reduz a um ponto
Lema 35 Dados um segmento de reta [A1A2] e uma linha poligonal [B1 Bn]
ε[A1A2][B1Bn] = maxi=1n
d(Bi [A1A2])
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 33
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H-2 -2L
paraA1 A2 A3DB = 2
(a) O ponto B pertence a salsichados dois segmentos de reta queformam a linha poligonal
A1 = H-1 1L
A2 = H-1 -1L
A3 = H1 0L
B = H1 -1L
paraA1 A2 A3DB =
2
5
(b) O ponto B pertence a salsichade [A2A3]
A1 = H-2 1L
A2 = H-1 -1L
A3 = H1 0L
A4
=H2
-2
L
B = H-1 0L
paraA1 ordm A4DB =
1
5
(c) O ponto B pertence a salsichade [A1A2]
Figura 35 Exemplos de aplicacao da funcao Eps [lppt] +
Demonstracao Seja ε = maxi=1n
d(Bi [A1A2]) Como
B1 Bn isin [A1A2](ε[A1A2][B1Bn])
tem-se que ε[A1A2][B1Bn] ge ε
Por outro lado como [A1A2](ε) e convexo contem [BiBj] i j = 1 n Em parti-
cular [B1 Bn] sube [A1A2](ε) logo ε[A1A2][B1Bn] le ε
Conclui-se assim que ε[A1A2][B1Bn] = ε
Observando de acordo com o Lema 34 que d(Bi [A1A2]) = ε[A1A2]Bi recorrendo a
uma instancia anterior a funcao Eps calcula o maximo dos ε[A1A2]Bi i = 1 n
Na Figura 36 apresentam-se dois exemplos da situacao acabada de descrever
Face a sequencia dos lemas seria natural agora apresentar um resultado que permitisse
definir um algoritmo para a construcao de Eps quando o primeiro argumento e uma linha
poligonal e o segundo e um segmento de reta ou ate uma linha poligonal O proximo lema
vai nesse sentido mas apenas considera uma situacao particular
Lema 36 Dados uma linha poligonal [A1A2A3] e um segmento de reta [B1B2] designe-
mos por E o conjunto dos pontos equidistantes de [A1A2] e [A2A3] ie
E =P isin R2 d(P [A1A2]) = d(P [A2A3])
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 34
A1 = H0 1LA2 = 1
1
2
B1
=H-
1
1L
B2 = H-1 -1L
B3 = H1 0L
paraA1 A2DB1 B2 B3D = 5
(a) Linha poligonal formada pordois segmentos de reta
A1
=H-1
1
L
A2
=0
1 2
B1
=H-
2
1L
B2 = H-1 -1L
B3
=H1
1L
B4
=
3 2
-
1 2
paraA1 A2DB1 ordm B4D =
13
2
(b) Linha poligonal formada portres segmentos de reta
Figura 36 Exemplos de aplicacao da funcao Eps [seglp] +
1 Se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Se [B1B2] cap E 6= empty designando por B3 um ponto de [B1B2] cap E entao
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Demonstracao Seja ε = ε[A1A2A3][B1B2]
1 Considere-se a situacao em que [B1B2] cap E = empty
Observando que [A1A2A3](ε) = [A1A2](ε) cup [A2A3](ε) e simples concluir que ε le
mini=12
ε[AiAi+1][B1B2] Suponhamos entao que
ε lt mini=12
ε[AiAi+1][B1B2] (31)
Vejamos que existe B3 isin [B1B2] tal que d(B3 [A1A2]) le ε lt d(B3 [A2A3])
Com efeito existe um ponto em [B1B2] que esta em [A1A2](ε) mas que nao esta em
[A2A3](ε) pois caso contrario [A1A2](ε) supe [B1B2] o que implicaria que ε[A1A2][B1B2] le
ε contrariando a hipotese (31)
Analogamente se conclui que existe um ponto B4 isin [B1B2] tal que d(B4 [A2A3]) le
ε lt d(B4 [A1A2])
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 35
A funcao
Φ [B3B4] minusrarr R
B 7minusrarr d(B [A1A2])minus d(B [A2A3])
e contınua e Φ(B3) lt 0 lt Φ(B4) logo existe B isin ]B3B4[ tal que Φ(B) = 0 ie
B isin E o que entra em contradicao com o facto de [B1B2] cap E = empty Conclui-se
assim que se [B1B2] cap E = empty entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
2 Seja B3 isin [B1B2] cap E denotemos δi = d(Bi [A1A2A3]
) i = 1 2 3 e seja δ =
maxi=123
δi Vejamos que
forall i isin 1 2 exist j isin 1 2 [BiB3] sube [AjAj+1](δ) (32)
Com efeito observando que δ ge δ3 tem-se que B3 isin [AjAj+1](δ) j = 1 2
Fixemos i isin 1 2 Como δi le δ tem-se que Bi isin [A1A2A3](δ) logo Bi isin
[AjAj+1](δ) para algum j isin 1 2 Usando o facto de [AjAj+1](δ) ser convexo
conclui-se que [BiB3] sube [AjAj+1](δ) donde se deduz (32) o que implica que ε le δ
Por outro lado e imediato verificar que ε ge δ Obtem-se assim que se [B1B2]capE 6= empty
e sendo B3 um ponto de [B1B2] cap E ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
Para efeitos do calculo de ε[A1A2A3][B1B2] na sequencia do Lema 36 e fundamental a
caracterizacao da regiao de equidistancia E Considerando tres pontos nao colineares A1
A2 e A3 comecemos por representar as bandas abertas formadas pelos pontos cuja distancia
a cada um dos segmentos de reta [A1A2] e [A2A3] e realizada no pe da perpendicular (ver
Figura 37(a))
Com base nas bandas representadas consideremos as regioes R1 a R6 identificadas na
Figura 37(b)
A distancia de qualquer ponto de R1 aos segmentos de reta [A1A2] ou [A2A3] e a
distancia desse ponto as retas suporte de cada uma dos segmentos de reta Assim em
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 36
A2
A1
A3
(a) Conjunto dos pontos em que adistancia aos segmentos de reta [A1A2]ou [A2A3] se realiza no pe da perpendi-cular
R4
R6
R3
R2
R1
R5
A2
A1
A3
(b) Regioes de pontos R1 a R6
E1
R4
R6
R3
R2
R1
R5
A2
A1
A3
(c) Pontos de equidistancia pertencentesa bissetriz do angulo angA1A2A3
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(d) Pontos de equidistancia pertencentesao arco de parabola E1E2
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(e) Pontos de equidistancia pertencentesa mediatriz do segmento de reta [A1A3]
E1
E2
R4
R6
R3
R2
R1
R5
A2
A1
A3
(f) Conjunto de pontos equidistancia
Figura 37 Caracterizacao do conjunto de equidistancia E
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 37
R1 os pontos equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes das retas
suporte ie sao os pontos que pertencem a bissetriz do angulo angA1A2A3 e a regiao R1
(ver Figura 37(c))
A distancia de qualquer ponto de R2 a [A1A2] coincide com a distancia desse ponto a
A1 e a distancia de qualquer ponto de R2 a [A2A3] e determinada pelo pe da perpendicular
a reta suporte de [A2A3] Tem-se entao que os pontos de R2 equidistantes de [A1A2] e
[A2A3] sao os pontos equidistantes de A1 e da reta suporte de [A2A3] o que define um arco
de parabola cujo foco e A1 e cuja diretriz e a reta suporte de [A2A3] (ver Figura 37(d))
A distancia de qualquer ponto de R3 a [A1A2] e igual a distancia desse ponto a A1 e a
distancia de qualquer ponto de R3 a [A2A3] e igual a distancia desse ponto a A3 Conclui-se
entao que os pontos de R3 equidistantes de [A1A2] e [A2A3] sao os pontos equidistantes
de dois pontos pelo que se trata dos pontos da mediatriz do segmento de reta [A1A3] que
pertencem a R3 (ver Figura 37(e))
A distancia de qualquer ponto de R4 a [A1A2] e a [A2A3] coincide com a distancia
desse ponto a A2 pelo que todos os pontos do cone designado por R4 sao equidistantes
de [A1A2] e de [A2A3]
Relativamente aos pontos pertencentes a R5 qualquer ponto desta regiao encontra-se
mais proximo de [A1A2] do que de [A2A3] pelo que nao existem nesta regiao pontos
equidistantes de [A1A2] e de [A2A3] Como qualquer ponto de R6 esta mais proximo
de [A2A3] do que de [A1A2] concluı-se entao que tambem nao existem em R6 pontos
equidistantes de [A1A2] e de [A2A3]
Fica assim caracterizada a regiao de equidistancia E (ver Figura 37(f))
Observe-se que se os pontos A1 A2 e A3 forem colineares estes definem um segmento
de reta e nesse caso a regiao de equidistancia sera formada pela reta perpendicular a esse
segmento de reta que passa por A24
No caso de A1A2 = A2A3 e os pontos A1 A2 e A3 nao serem colineares a bissetriz do
angulo angA1A2A3 esta contida na mediatriz do segmento de reta [A1A3] e nesta situacao
o arco de parabola degenera num ponto
Denotaremos por E a regiao de equidistancia Denotaremos ainda por CE a regiao de
4De facto se A1 isin [A2A3] ou A3 isin [A1A2] entao a regiao de equidistancia e a banda limitada pelasretas perpendiculares ao segmento de reta que passam por A1 e A2 ou A2 ou A3 respetivamente
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 38
E correspondente ao cone de equidistancia (regiao R4 na Figura 37) e por ΓE a curva
de equidistancia correspondente a uniao do segmento de reta do arco de parabola e da
semirreta que constituem a regiao de equidistancia correspondentes as regioes R1 R2 e
R3 respetivamente identificadas na Figura 37 Os pontos que limitam o arco de parabola
serao denotados por E1 e E2 tal como na Figura 37
Para exemplificar a regiao de equidistancia elaborou-se uma pequena animacao embe-
bida na Figura 38 onde se pode observar a evolucao dessa regiao quando se movem os
pontos que definem os extremos dos segmentos de reta
Eps1 0
Figura 38 Regiao de equidistancia +
Na construcao da curva de equidistancia a representacao do arco de parabola limitado
pelos pontos E1 e E2 e feita com recurso a uma curva de Bezier quadratica usando tres
pontos de controlo os extremos do arco de parabola e um terceiro ponto correspondente
a intersecao das retas tangentes a parabola nos pontos E1 e E2 Esse ponto de intersecao
corresponde a intersecao da bissetriz do angulo angA1A2A3 e da mediatriz do segmento de
reta A1A3 como se pode concluir da proposicao seguinte
Proposicao 37 Dados os pontos A1 A2 e A3 a curva de equidistancia de [A1A2] e
[A2A3] ΓE e uma curva de classe C 1
Demonstracao Designemos por θ a amplitude do angulo angA1A2A3 e consideremos que
θ isin ]0 π2[ Admitamos sem perda de generalidade que A2 coincide com a origem que A3
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 39
E1
E2
A1
A2 C1C2 C3 A3
C4
Figura 39 Figura auxiliar a demonstracao de que ΓE e uma curva de classe C 1
pertence ao semieixo positivo das abcissas e que A1 tem ordenada 1 ou seja A1 = (1 α)
A2 = (0 0) e A3 = (β 0) α β isin R+ (ver Figura 39) Sejam E1 = (xE1 yE1) e
E2 = (xE2 yE2) as extremidades do arco de parabola
A curva de equidistancia ΓE nesta situacao corresponde ao grafico de uma funcao
Provar que a curva e de classe C 1 e provar que a funcao e derivavel em xE1 e em xE2
A parabola cujo foco e o ponto (1 α) e cuja diretriz e a reta y = 0 corresponde ao
grafico da funcao
y =(xminus 1)2
2α+α
2 (33)
cuja derivada e
yprime =xminus 1
α (34)
Como E1 e um ponto da bissetriz do angulo angA1A2A3 A1A2 = A2C2 =radic
1 + α2 (ver
Figura 39) logo xE1 =radic
1 + α2 Por outro lado como E1 pertence a parabola
A1E1 = E1C2 hArr (radic
1 + α2 minus 1)2 + (yE1 minus α)2 = y2E1
hArr 1 + α2 minus 2radic
1 + α2 + 1 + y2E1minus 2αyE1 + α2 = y2E1
hArr yE1 =1 + α2 minus
radic1 + α2
α
logo E1 =(radic
1 + α2 1+α2minusradic1+α2
α
)
O declive da reta A2E1 e dado por
yE1
xE1
=1 + α2 minus
radic1 + α2
αradic
1 + α2=
radic1 + α2 minus 1
α (35)
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 40
O declive da reta tangente a parabola em E1 e dado por
yprime(xE1) =xE1 minus 1
α=
radic1 + α2 minus 1
α (36)
De (35) e (36) conclui-se que a funcao que representa a curva de equidistancia e
derivavel em E1
O declive da reta tangente a parabola em E2 e dado por
yprime(β) =β minus 1
α (37)
Usando a semelhanca de triangulos 4[A3E2C3] sim 4[A3C4E2] sim 4[A3C1A1] (ver
Figura 39) conclui-se que o declive da reta C3E2 e dado por
E2A3
A3C3
=C4E2
C4A3
=A3C1
A1C1
=β minus 1
α (38)
De (37) e (38) resulta que a funcao que representa a curva de equidistancia e derivavel
em E2
De modo analogo se demonstra a derivabilidade da funcao que representa a curva de
equidistancia em E1 e em E2 se θ isin [π2 π[
Proposicao 38 Sejam [A1A2A3] uma linha poligonal [B1B2] um segmento de reta e seja
E o conjunto dos pontos equidistantes de [A1A2] e [A2A3]
Se ]B1B2[capE e nao vazio e nao singular entao
ε[A1A2A3][B1B2] = mini=12
ε[AiAi+1][B1B2]
ie apenas os extremos do segmento de reta [B1B2] sao determinantes no calculo de
ε[A1A2A3][B1B2]
Demonstracao Recordemos que E = CEcupΓE Vejamos que se ]B1B2[ cap E e nao vazio
e nao singular entao existem dois pontos B3 B4 isin ]B1B2[ tais que d(B3 [A1A2A3]) lt
d(B4 [A1A2A3])
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 41
Se ]B1B2[capCE 6= empty entao existe uma infinidade de pontos pertencentes simultanea-
mente a ]B1B2[ e ao cone CE
Consideremos P1 e P2 dois pontos distintos pertencentes a ]B1B2[ e ao cone de equi-
distancia Se P1 e P2 pertencem ao mesmo arco de circunferencia de centro em A2 entao
P1 e P2 estao a mesma distancia de [A1A2A3] Tomamos entao B3 = P1+P2
2e B4 = P1 ou
B4 = P2 Se P1 e P2 nao pertencem ao mesmo arco de circunferencia de centro em A2
entao d(P1 A2) 6= d(P2 A2) bastando tomar B3 = P1 e B4 = P2 ou vice versa
Se ]B1B2[capCE = empty consideremos uma funcao γ [0+infin[minusrarr R2 injetiva corres-
pondente a uma parametrizacao contınua da curva de equidistancia ΓE
Consideremos a funcao
ψ [0+infin[ minusrarr R+0
t 7minusrarr d(γ(t) [A1A2A3])
que e estritamente crescente
Sejam P1 e P2 pertencentes a ]B1B2[capΓE e sejam t1 t2 isin R+0 tais que P1 = γ(t1)
e P2 = γ(t2) Supondo sem perda de generalidade que t1 lt t2 basta entao tomar
B3 = γ(t1) = P1 e B4 = γ(t2) = P2
Fica entao justificado que nas condicoes indicadas existem dois pontos B3 B4 isin
]B1B2[ tais que d(B3 [A1A2A3]) lt d(B4 [A1A2A3])
Vejamos agora que d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
Suponhamos que d(B4 [A1A2A3]) gt maxi=12
ε[A1A2A3]Bi Como d(B4 [A1A2A3]) gt
d(B3 [A1A2A3]) tem-se que d(B4 [A1A2A3]) gt maxi=123
ε[A1A2A3]Bi Por outro lado pelo
Lema 36 sabemos que
ε[A1A2A3][B1B2] = maxi=123
ε[A1A2A3]Bi
portanto
d(B4 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
o que e absurdo
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
32 Caracterizacao da funcao Eps 42
Suponhamos agora que existe eventualmente um ponto B5 isin ]B1B2[capE tal que
d(B5 [A1A2A3]) gt d(B4 [A1A2A3])
Usando o raciocınio anterior e os mesmos argumentos colocando B4 no lugar de B3 e B5
no lugar de B4 conclui-se que d(B5 [A1A2A3]) le maxi=12
ε[A1A2A3]Bi
A Proposicao 38 vem justificar o facto do algoritmo da funcao Eps que determina o
valor ε[A1A2A3][B1B2] desprezar a verificacao da intersecao do segmento de reta [B1B2] com
o cone de equidistancia Como ficou demonstrado no caso da intersecao de [B1B2] com a
regiao de equidistancia se verificar em mais do que um ponto os pontos relevantes para a
sua determinacao sao os extremos do segmento de reta [B1B2] Em termos computacionais
o esforco seria bastante maior se a funcao Eps tivesse de verificar a intersecao com o cone
de equidistancia
Na Figura 310 apresentam-se tres exemplos do calculo de ε[A1A2A3][B1B2] numa situacao
em que o ponto de intersecao com a curva de equidistancia e quem determina o valor de ε
numa situacao em que o segmento de reta nao interseta a regiao de equidistancia e numa
situacao em que ha intersecao entre o segmento de reta e o cone de equidistancia
A1 = H-1 0L
A2 = H0 1L
A3 = H1 0L
B1 = H-1 -1L B2 = H1 -1L
paraA1 A2 A3DB1 B2D = 2
(a) O valor de ε e calculadousando um ponto que pertence acurva de equidistancia ΓE
A1 = H-1 0L
A2 = H0 1LA3 = H1 1L
B1 = H-1 -1LB2 = 0 -
1
2
paraA1 A2 A3DB1 B2D =
3
2 2
(b) Situacao em que nao existeintersecao com a regiao de equi-distancia E
A1 = H-1 -1L
A2 = H0 0L
A3 =
3
2 -1
B1
=-
1
1 2
B2 = H1 1L
paraA1 A2 A3DB1 B2D =
5
13
(c) Situacao em que [B1B2] in-terseta o cone de equidistanciaCE
Figura 310 Exemplos de aplicacao da funcao Eps [lpseg] +
Na Figura 311 na versao digital deste documento apresenta-se uma animacao analoga
a que foi apresentada na Figura 31 mas agora o calculo dos valores Eps1 e Eps2 e feito
automaticamente e estes valores sao atualizados sempre que se altera a posicao dos pontos
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 43
o que corresponde a considerar objetos diferentes
Eps1 0
Eps2 0
Figura 311 Exemplo da interface grafica interativa Os valores de Eps1 e Eps2 saoatualizados em tempo real +
33 Aspetos computacionais
Na seccao anterior e apresentado um conjunto de resultados com um objetivo preciso
reduzir em ultima analise a definicao de Eps ao calculo da distancia entre dois pontos
Da descricao que foi feita do algoritmo que a funcao Eps executa para determinar εobj1obj2
consoante a natureza dos objetos dados como argumento nao transparecem todas as opcoes
computacionais que foram tomadas Apesar do codigo estar disponıvel em anexo5 sera
difıcil em alguns casos interpretar esse mesmo codigo Nesta seccao faz-se a descricao
mais detalhada da funcao Eps bem como de algumas funcoes auxiliares por ela invocadas
Comecamos por descrever algumas funcoes utilizadas na construcao grafica das imagens e
das animacoes que ilustram este trabalho
331 Representacao grafica
O primeiro comentario esta relacionado com a construcao da salsicha-ε de um objeto
No caso do objeto ser um ponto a salsicha-ε e o disco centrado nesse ponto e de raio ε
5Se estiver a ler este texto em suporte suporte digital podera visualizar o codigo das funcoes referidasassinaladas a azul colocando o curso sobre o nome da funcao
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 44
Se o objeto e um segmento de reta ou uma linha poligonal uma opcao computacional para
obter a representacao grafica da salsicha poderia ser representar um numero finito de discos
de raio ε centrados em pontos do segmento de reta ou da linha poligonal suficientemente
proximos A definicao de ldquosuficientemente proximosrdquo depende da resolucao do suporte
utilizado na visualizacao da representacao grafica tipicamente monitor ou impressora mas
tambem do valor de ε A Figura 312(a) ilustra a situacao acabada de descrever O
processo de representar a salsicha de um objeto formado por uma infinidade de pontos e
computacionalmente pouco eficiente e pode implicar a representacao de milhares de discos
Como lidamos com uma classe muito particular de objetos segmentos de reta ou linhas
poligonais optamos por uma abordagem muito mais eficiente para representar as salsichas-
-ε desses objetos A salsicha-ε de um segmento de reta pode ser construıda usando apenas
tres objetos graficos dois discos de raio ε centrados nos extremos do segmento e um
retangulo cujos lados tem comprimento 2ε e comprimento igual ao do segmento de reta
como se pode ver na Figura 312(b) A funcao que constroi este retangulo e a funcao
Retangulo No caso do objeto ser uma linha poligonal definida por n pontos a salsicha e
construıda a custa de n discos e nminus1 retangulos (ver Figura 312(c)) A funcao Salsicha
aceita como argumento um ponto ou uma lista de pontos e o valor para o raio e devolve um
objeto grafico correspondente a representacao da salsicha respetiva A funcao Representa
devolve um objeto grafico que permite assinalar os pontos e os segmentos de reta que
constituem o objeto dado como argumento
(a) Construcao da salsicha de umsegmento de reta usando apenasdiscos
(b) Construcao da salsicha de umsegmento de reta usando dois dis-cos e um retangulo
(c) Construcao da salsicha deuma linha poligonal usando dis-cos e retangulos
Figura 312 Opcoes graficas para a construcao da salsicha-ε de um segmento ou linhapoligonal +
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 45
As restantes funcoes auxiliares relativas a parte grafica LegendaPontos e LegendaEps
sao usadas para representar de forma semiautomatica as coordenadas dos pontos represen-
tados e o valor do εobj1obj2 nas representacoes graficas
332 A funcao Eps
A construcao da funcao Eps e de facto a razao principal deste capıtulo Comecamos
por referir que a construcao desta funcao se revelou mais complicada do que inicialmente
se previa e o objetivo inicial nao foi totalmente atingido
Dados dois objetos em R2 obj1 e obj2 Eps[obj1obj2] deveria calcular εobj1obj2
quando os objetos dados como argumentos fossem pontos segmentos de reta ou linhas
poligonais Ficaram por concretizar a situacao em que o obj2 e um segmento de reta e o
obj1 e uma linha poligonal definida por mais de tres pontos e a situacao em que os dois
objetos sao linhas poligonais definidas por tres ou mais pontos
O procedimento que permite determinar o valor de εobj1obj2 difere consoante a na-
tureza dos dois objetos Definindo diferentes moldes6 ajustados a natureza dos argu-
mentos da funcao Eps foram criadas seis instancias para a funcao Eps de modo a apli-
car o procedimento ajustado a natureza dos objetos dados como argumentos Um ob-
jeto e identificado pelas coordenadas dos pontos que o definem um ponto e uma lista
com dois elementos pt=xy um segmento de reta e uma lista contendo dois pontos
seg=x1y1x2y2 e uma linha poligonal e uma lista contendo dois ou mais pontos
lp=x1y1 xnyn
Quando a funcao Eps e invocada com as coordenadas de dois pontos pt1 e pt2 como
argumentos Eps[pt1pt2] a funcao limita-se a calcular de acordo com o Lema 32 a
norma do vetor pt1-pt2
Quando colocamos como primeiro argumento da funcao Eps as coordenadas de um
ponto pt e como segundo argumento colocamos uma lista com as coordenadas de
uma linha poligonal com dois ou mais pontos lp=pt1 ptn
Eps[ptlp] invoca
a instancia anterior de Eps para determinar a lista Eps[ptpt1] Eps[ptptn] e
devolve o maximo dessa lista
6Molde deve ser entendido no sentido do conceito pattern do Mathematica que representa uma classede expressoes
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 46
A2
A1
B
(a) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A1
A2
A1
B
(b) B situa-se no complementardo conjunto de pontos do planocompreendido entre as retas emais proximo de A2
A2
A1 B
(c) B situa-se no conjunto depontos do plano compreendidoentre as retas
Figura 313 Posicao do ponto B relativamente ao segmento de reta [A1A2]
O Lema 34 determina a forma de implementar a funcao Eps no caso em que o primeiro
argumento e uma linha poligonal e o segundo argumento e um ponto Em termos com-
putacionais optou-se por separar a situacao em que o primeiro argumento e um segmento
de reta da situacao em que o primeiro argumento e uma linha poligonal com pelo menos
tres pontos Eps[segpt] limita-se a calcular a distancia do ponto ao segmento de reta
O algoritmo que e usado no calculo da distancia de um ponto B a um segmento de reta
[A1A2] baseia-se na decisao se essa distancia e a distancia do ponto B a um dos extremos
do segmento de reta [A1A2] ou se e realizada no pe da perpendicular do ponto B relativa-
mente ao segmento de reta [A1A2] O calculo do produto interno dos vetoresminusminusminusrarrA1A2 e
minusminusrarrA1B
esta na base dessa decisao se o produto interno e negativo entao o ponto A1 e o ponto
do segmento de reta [A1A2] mais proximo de B como e ilustrado na Figura 313(a) se o
produto interno e maior do que o quadrado da norma do vetorminusminusminusrarrA1A2 entao o ponto A2
e o ponto do segmento de reta mais proximo de B situacao ilustrada na Figura 313(b)
caso nenhuma das situacoes anteriores ocorra entao a distancia de B a [A1A2] e realizada
no pe da perpendicular como e apresentado na Figura 313(c) No caso em que o primeiro
argumento e uma linha poligonal definida por tres ou mais pontos lp=pt1 ptn
Eps[lppt] constroi a listaEps[pt1pt2pt] Eps[pt(n-1)ptnpt]
e de-
volve o mınimo dessa lista
Dados um segmento de reta seg e uma linha poligonal lp=pt1 ptn
segundo
o Lema 35 o valor devolvido por Eps[seglp] e o maxi=1n
Eps[seg pti]
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 47
O caso que falta considerar e a programacao de Eps na situacao em que o primeiro
argumento e uma linha poligonal com tres pontos e o segundo argumento e um segmento
de reta Esta e a situacao menos imediata e o algoritmo tem em conta o Lema 36 e a
Proposicao 38
Dados uma linha poligonal definida por tres pontos [A1A2A3] e um segmento de
reta [B1B2] Eps[lpseg] comeca por verificar se os tres pontos da linha poligonal sao
colineares se forem colineares a situacao e equivalente a considerar o calculo de Eps
considerando como argumentos dois segmentos de reta Nao foi essa no entanto a opcao
computacional tomada O algoritmo para a determinacao de Eps no caso em que os
argumentos sao uma linha poligonal definida por tres pontos e um segmento de reta
comeca por verificar a intersecao do segmento de reta com a curva de equidistancia (ver
pagina 38) Caso se verifique a colinearidade dos pontos que formam a linha poligonal esse
passo e dispensado devolvendo a funcao o max1=12
Eps[A1 A2 A3 Bi]
Para determinar se existe ou nao intersecao do segmento de reta com a curva de
equidistancia a funcao comeca por determinar as extremidades do arco de parabola re-
feridos como E1 e E2 na Figura 37 Essa tarefa e efetuada por uma funcao auxiliar
PontosEquiDist
A determinacao dos pontos E1 e E2 e efetuada usando um processo geometrico baseado
no calculo de dois vetores Considerando a linha poligonal [A1A2A3] designemos por ~u1 e
~u2 os vetoresminusminusminusrarrA2A1 e
minusminusminusrarrA2A3 tais que ~u1 le ~u2 Designando por θ o angulo formado por
estes dois vetores determinado pela funcao AngVetores o ponto E1 e o ponto A2+~u1+~w1
onde ~w1 e o vetor perpendicular a ~u1 com norma igual a tg θ2~u1 cujo sentido e o que
aponta para o vetor ~u2 (ver Figura 314(a)) A funcao OrtogonalCPR devolve o vetor
perpendicular ao vetor dado como argumento com a mesma norma tal que a rotacao que
permite passar do vetor argumento ao vetor devolvido e a rotacao no sentido direto A
eventual correcao do sentido do vetor ~w1 e efetuada pela funcao Orientacao Designando
por ~u3 o vetor minus~u2 por ~u4 o vetor ~u1 minus ~u2 e por γ o angulo formado pelos vetores ~u3 e
~u4 E2 = A2 minus ~u3 + ~w2 onde ~w2 e o vetor perpendicular a ~u3 com norma igual a ~u42 sen γ
cujo sentido e o que aponta para o vetor ~u1 (ver Figura 314(b))
Determinados os pontos E1 e E2 a funcao avanca no sentido de verificar se existe
intersecao do segmento de reta [B1B2] com a curva de equidistancia
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 48
θ
~w1
~u2
E1~u1
A1
A3
A2
(a) Construcao do pontoE1
~u1
A1
A3
A2
γ
γ
~u3
~w2
~u4
E2
(b) Construcao do pontoE2
Figura 314 Ilustracao do calculo de E1 e E2 pela funcao PontosEquiDist
O primeiro passo e verificar se os segmentos de reta [B1B2] e [A2E1] se intersetam
Essa verificacao e efetuada pela funcao SegIntersecQ cujo algoritmo sera referido pos-
teriormente Havendo intersecao e calculado um ponto de intersecao usando a funcao
LinearSolve do Mathematica e os coeficientes das retas suporte de cada um dos seg-
mentos de reta calculados pela funcao Reta Observe-se que a solucao dada e descartada
no caso de nao pertencer ao segmento de reta [B1B2] situacao que pode ocorrer se o sis-
tema resolvido pelo LinearSolve for indeterminado A verificacao e efetuada pela funcao
NoRetangulo Se a resposta for afirmativa designando por B3 esse ponto o algoritmo ter-
mina calculando maxEps[A1 A2 A3 Bi] i = 1 2 3
onde e invocada uma instancia
ja definida da funcao Eps
Se nao houver intersecao entre os segmentos [B1B2] e [A2E1] avanca-se no sentido
de verificar se o segmento de reta [B1B2] interseta a curva de equidistancia na semirreta
com origem no ponto E2 A verificacao e efetuada reduzindo o problema a verificacao da
intersecao de dois segmentos de reta Para isso determina-se o ponto da semirreta cuja
distancia ao ponto E2 e igual ao maximo das normas dos vetoresminusminusminusrarrE2B1 e
minusminusminusrarrE2B2 e procede-se
exatamente como na situacao anterior
Se nao se verificar alguma das situacoes descritas anteriormente entao a funcao deveria
verificar se existe intersecao do segmento de reta com o arco de parabola que forma a curva
de equidistancia Efetivamente o que a funcao faz e determinar se existe intersecao entre a
reta suporte do segmento de reta e a parabola Para tal e usada a funcao do Mathematica
Solve para resolver o sistema de equacoes que definem a parabola e a reta Para obter a
equacao da reta e usada a funcao Reta ja referida enquanto que para obter a equacao
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
33 Aspetos computacionais 49
da parabola e usada a funcao Parabola cujos argumentos sao as coordenadas do foco da
parabola e a lista dos coeficientes a b c da equacao da diretriz da parabola na forma
ax + by + c = 0 Naturalmente o sistema podera ter nenhuma uma ou duas solucoes
Seguidamente e feita a verificacao se as solucoes pertencem ao segmento de reta [B1B2]
e as que pertencerem sao adicionadas a lista que contem os extremos do segmento
procedendo-se de modo analogo aos anteriores para o calculo do valor de saıda Observe-se
que na situacao anterior podemos estar a adicionar pontos do segmento de reta que nao
correspondem a pontos de intersecao do segmento de reta com a curva de equidistancia
Nesse caso estamos a acrescentar um ponto que e irrelevante para a determinacao do valor
de saıda mas esta solucao e computacionalmente mais economica do que fazer a verificacao
de que o ponto interseta a parabola no arco de parabola definido pelos pontos E1 e E2
A funcao usada para verificar se dois segmentos de reta se intersetam e a funcao
SegIntsecQ e o algoritmo foi retirado de [1] Dois segmentos de reta intersetam-se se
e so se se verifica uma das seguintes condicoes
1 cada segmento de reta cruza7 a reta suporte do outro segmento
2 uma extremidade de um segmento de reta pertence ao outro segmento de reta
Para verificar a primeira condicao foi definida a funcao Ext2D que calcula o analogo ao
produto externo de dois vetores em R2
7ie ha pontos do segmento de reta nos dois semiplanos abertos definidos pela reta suporte
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica
Funcoes usadas na representacao grafica
LegendaEps
LegendaEps[LetraObj1_StringQLetraObj2_StringQ
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]
RowBox[LetraObj1LetraObj2]]=
ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
LegendaEps[LetraObj1_StringQnptsObj1_IntegerPositive
LetraObj2_StringQnptsObj2_IntegerPositive
EpsObj1Obj2_NumericQPosicao_NumericQ_NumericQ]=
Text[Style[RawBoxesRowBox[SubscriptBox[[CurlyEpsilon]RowBox[
Which[nptsObj1==1LetraObj1nptsObj1==2
RowBox[[SubscriptBox[LetraObj11]SubscriptBox[LetraObj12]
]]nptsObj1==3RowBox[[SubscriptBox[LetraObj11]
SubscriptBox[LetraObj12]SubscriptBox[LetraObj13]]]True
RowBox[[SubscriptBox[LetraObj11][CenterEllipsis]
SubscriptBox[LetraObj1nptsObj1]]]]
Which[nptsObj2==1LetraObj2nptsObj2==2
RowBox[[SubscriptBox[LetraObj21]SubscriptBox[LetraObj22]]]
nptsObj2==3RowBox[[SubscriptBox[LetraObj21]
SubscriptBox[LetraObj22]SubscriptBox[LetraObj23]]]True
RowBox[[SubscriptBox[LetraObj21]
[CenterEllipsis]SubscriptBox[LetraObj2nptsObj2]]]]]]
=ToBoxesEpsObj1Obj2]FontSize-gt12]PosicaoRight]
50
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 51
LegendaEps
LegendaEpsusage=LegendaEps e uma func~ao que permite colocar na figura
o valor do menor [CurlyEpsilon] para o qual a vizinhanca-[CurlyEpsilon]
de um objeto contem o outro
LegendaPontos
LegendaPontos[letra_StringQpt_NumericQ_NumericQ
offset-120dir_10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPt
DisplayFunctiongt(RowBox[letra=(RowBox
[12])]amp)]ptoffsetdir]
LegendaPontos[box_SubscriptBoxpt_NumericQ_NumericQ
offset-120dir10]=
Text[RawBoxesTemplateBox[ToBoxesptCoordPtDisplayFunctiongt
(RowBox[box=(RowBox[12])]amp)]ptoffsetdir]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ]=
Module[npts=LengthlpTable[LegendaPontos
[SubscriptBox[letrapt]lp[[pt]]]pt1npts]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQoffset
_NumericQ_NumericQ]=
Module[npts=LengthlpIf[Lengthoffset==npts
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]
offset[[pt]]]pt1npts]Message[LegendaPontosoffset]]]
LegendaPontos[letra_StringQlp_NumericQ_NumericQ
offset_NumericQ_NumericQdir_NumericQ_NumericQ]=
Module[npts=Lengthlp
Which[Lengthoffset=nptsMessage[LegendaPontosoffset]
Lengthdir=nptsMessage[Legendadir]True
Table[LegendaPontos[SubscriptBox[letrapt]lp[[pt]]offset[[pt]]
dir[[pt]]]pt1npts]]]
LegendaPontosusage=LegendaPontos e uma func~ao que permite colocar a
legenda nos pontos de uma listaescolhendo sımbolos para os representar
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 52
LegendaPontos
LegendaPontosoffset=A dimens~ao da lista offset deve ser igual ao numero
de pontos da linha poligonal
LegendaPontosdir=A dimens~ao da lista dir deve ser igual ao numero de
pontos da linha poligonal
NumPtsObj
NumPtsObj[_NumericQ_NumericQ]=1
NumPtsObj[Obj_NumericQ_NumericQ]=LengthObj
Representa
Representa[pt_NumericQ_NumericQ]=Point[pt]
Representa[lp_NumericQ_NumericQ]=Line[lp]Representalp
Representausage=Func~ao que devolve uma lista de primitivas graficas que
permitem representar o ponto ou os pontos cujas coordenadas s~ao dadas como
argumentosunidos sequencialmente por segmentos de reta
Retangulo
Retangulo[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ
raio_NumericQ]=
Polygon[pt1+pt2+pt2-pt1-]amp[raioNormalizeCross[pt1-pt2]]
Retangulousage=Retangulo e uma func~ao que determina os vertices de um
retangulo quando s~ao dados como argumentos os dois pontos medios de dois
lados opostos e o semi-comprimento desses ladosdevolvendo a primitiva
grafica que permite representar esse retangulo
Salsicha
Salsicha[pt_NumericQ_NumericQraio_]=Disk[ptraio]
Salsicha[pts_NumericQ_NumericQraio_]=
SequenceJoin[Retangulo[raio]ampPartition[pts21]Disk[raio]amppts]
Salsichausage=Salsicha e uma func~ao que devolve a sequencia de primitivas
graficas que permitem representara custa de discos e retangulosa
vizinhanca-[CurlyEpsilon]de um pontoum segmento de reta ou uma linha
poligonal
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 53
Funcao Eps
Eps
Eps[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
Norm[pt1-pt2]
Eps[pt_NumericQ_NumericQlp_NumericQ_NumericQ]=
Eps[pt]amplpMax
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
pt_NumericQ_NumericQ]=
Module[v1=seg[[2]]-seg[[1]]v2=pt-seg[[1]]v1norma2pinterno
v1norma2=(Normv1)^2pinterno=Dot[v1v2]Which[pinternolt=0
Normv2pinternogtv1norma2Norm(pt-seg[[2]])True
Norm(v2-pinternov1norma2v1)]]
Eps[lp_NumericQ_NumericQpt_NumericQ_NumericQ]=
Eps[pt]ampPartition[lp21]Min
Eps[seg_NumericQ_NumericQ_NumericQ_NumericQ
lp_NumericQ_NumericQ]=
Eps[seg]amplpMax
Eps[lpRepeated[_NumericQ_NumericQ3]
seg_NumericQ_NumericQ_NumericQ_NumericQ]=
Module[ptsptMeioptsExtptsEquiretaintRetaParabolaXxYy
If[Det[(1-2)ampPartition[lp21]]==0pts=seg
ptMeio=lp[[2]]ptsExt=Sort[Drop[lp2]
Norm[1-ptMeio]ltNorm[2-ptMeio]amp]ptsEqui=PontosEquiDist[lp]
Which[SegIntersecQ[segptMeioFirstptsEqui]
pts=Union[segSelect[LinearSolveMost1Most2
-Last1Last2amp[RetasegReta[ptMeioFirstptsEqui]]
NoRetanguloQ[seg]amp]]
SegIntersecQ[segLastptsEquiLastptsEqui+Eps[LastptsEquiseg]
Normalize[LastptsEqui-5PlusptsExt]]
pts=Union[segSelect[LinearSolve Most1Most2
-Last1Last2amp[RetasegReta[LastptsEquiLastptsEqui+
Eps[LastptsEquiseg]Normalize[LastptsEqui-5PlusptsExt]]]
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 54
Eps
NoRetanguloQ[seg]amp]]Truereta=Plus(RetasegXxYy1)
intRetaParabola=Solve[Parabola[FirstptsExtReta
[ptMeioLastptsExt]XxYy]==retareta==0XxYyReals]
If[intRetaParabola==pts=seg
pts=Union[segSelect[XxYyintRetaParabolaNoRetanguloQ[seg]amp]]]
]]Max(Eps[lp]amppts)]
Epsusage=Eps[obj1obj2] devolve o menor [CurlyEpsilon] tal que a
vizinhanca-[CurlyEpsilon] do obj1 contem o obj2 Os argumentosobj1 e obj2
s~ao pontossegmentos de reta ou linhas poligonaisidentificados pelas
coordenadas dos pontos que os caraterizamFunc~ao em construc~ao
Funcoes auxiliares
AngVetores
AngVetores[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
ArcCos[Dot[Normalizevector1Normalizevector2]]
AngVetoresusage=Devolve o valor do anguloem radianosformado pelos dois
vetores dados como argumentos
Ext2D
Ext2D[seg1_seg2_]=Det[seg1seg2]
Ext2Dusage=Ext2D[seg1seg2] e uma func~ao que determina o analogo ao
produto externo de dois vetores em R^2
MaxPosicao
MaxPosicao[list_]=Position[listMaxlist]Min
MaxPosicaousage=MaxPosicao[lista] devolve a menor posic~ao em que aparece
o maximo da lista dada como argumento
MinPosicao
MinPosicao[list_]=Position[listMinlist]Min
MinPosicaousage=MinPosicao[lista] devolve a menor posic~ao em que aparece
o mınimo da lista dada como argumento
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 55
NoRetanguloQ
NoRetanguloQ[ponto_vertices_]=
AndMapThread[(2lt=1lt=3)ampPrepend[Transpose
(SortTransposevertices)ponto]]
NoRetanguloQusage=NoRetangulo e uma func~ao que verifica se o ponto dado
como primeiro argumento pertence ao retangulo com lados paralelos aos eixos
coordenados definido por dois vertices opostosdados como segundo
argumento
Orientacao
Orientacao[vector1_NumericQ_NumericQ
vector2_NumericQ_NumericQ]=
Module[pext=Ext2D[vector1vector2]If[pext==00pextAbspext]]
Orientacaousage=Devolve 0 se os vetores forem colineares Caso contrario
devolve 1 se a rotac~ao que permite passar do primeiro vetor dado como
argumento para o segundo e efetuada no sentido direto e devolve -1 no outro
caso
OrtogonalCPR
OrtogonalCPR[vector_NumericQ_NumericQ]=-21ampvector
OrtogonalCPRusage=Devolve o vetor ortogonal ao vetor dado como argumento
com a mesma norma e orientac~ao positiva
Parabola
Parabola[foco_NumericQ_NumericQ
diretriz_NumericQ_NumericQ_NumericQx_y_]=
(Plus(diretrizxy1)^2)Plus((Mostdiretriz)^2)-Plus
(PlusTransposexy-foco^2)
Parabolausage=Parabola e uma func~ao que determina a equac~ao de uma
paraboladados o foco e a diretriz como argumentos
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 56
PontosEquiDist
PontosEquiDist[lpRepeated[_NumericQ_NumericQ3]]=
Module[vetores1vetores2vetores1=Sort[-11Vetor
Partition[lp21]Norm1ltNorm2amp]vetores2=1-2-2ampvetores1
If[Det[vetores1]==0
lp[[2]]+(Firstvetores1)+OrtogonalCPRvetores1[[1]]
(Tan[12AngVetores vetores1]Orientacaovetores1)
lp[[2]]-(Lastvetores2)+OrtogonalCPR(Normalize[Lastvetores2])
Norm[Firstvetores2](2Sin[AngVetoresvetores2]Orientacao
vetores1)]]
PontosEquiDistusage=Devolve uma lista com os extremos do arco de parabola
envolvido na definic~ao da regi~ao de equidistancia
Reta
Reta[pt1_NumericQ_NumericQpt2_NumericQ_NumericQ]=
If[pt1==pt2Message[RetaSamePoint]Flatten
Reverse(PlusTransposept1-pt2)1-1Detpt1pt2]
Retausage=Devolve uma lista da forma abc onde os elementos da lista
s~ao tais que a equac~ao ax+by+c=0 e uma equac~ao da reta definida pelas
coordenadas dos pontos dados como argumentos
RetaSamePoint=Os pontos dados como argumentos tem de ser diferentes
SegIntersecQ
SegIntersecQ[seg1_seg2_]=
Block[p11=Firstseg1p12=Lastseg1p21=Firstseg2
p22=Lastseg2v1=Vetorseg1v2=Vetorseg2x11x12x21x22
x11=Ext2D[v1p21-p11]x12=Ext2D[v1p22-p11]x21=Ext2D[v2p11-p21]
x22=Ext2D[v2p12-p21]
Which[x11x12lt0ampampx21x22lt0Truex11==0ampampNoRetanguloQ[p21seg1]True
x12==0ampampNoRetanguloQ[p22seg1]Truex21==0ampampNoRetanguloQ[p11seg2]
Truex22==0ampampNoRetanguloQ[p12seg2]TrueTrueFalse]]
SegIntersecQusage=SegIntersecQ[seg1seg2] e uma func~ao que devolve True
caso os dois segmentos dados como argumentos se intersetem e False caso
contrario
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Anexo - Funcoes do Mathematica 57
Vetor
Vetor[vertice1_Listvertice2_List]=vertice2-vertice1
Vetorusage=Vetor e uma func~ao que determina as coordenadas de um vetor
definido por dois pontos cujas coordenadas s~ao dadas como argumentos
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58
Bibliografia
[1] Cormen T H Leiserson C E Rivest R L e Stein C Introduction to algorithms
The MIT Press 2009
[2] Lima E Espacos metricos Projecto Euclides IMPA 1992
[3] Jesorsky O Kirchberg K J e Frischholz R W Robust face detection using the
Hausdorff distance Bigun J e Smeraldi F (Eds) Proceedings of Third International
Conference on Audio- and Video- Based Biometric Person Authentication Halmstad
Sweden 2001
httpwwwbioidcom
[4] Perez J Apuntes de Geometria de convexos Universidad de Granada 2008
httpwwwugressimjperezdocenciaGeomConvexos
[5] Rodrigues JF Obstacle problems in mathematical physics North-Holland Publishing
Co 1987
[6] Teixeira H Estudo de propriedades de curvas rectificaveis Tese de mestrado Univer-
sidade do Minho 2011
[7] Toussaint G Hausdorff distance between convex polygons course CS 507 Computa-
tional Geometry McGill University 1998
httpcgmcsmcgillcasimgodfriedteachingcg-projects98normandmainhtml
[8] Tricot C Curves and fractal dimension Springer-Verlag 1993
58