Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

69
Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e a salsicha de Minkowsky Maria Lúcia Pereira Marques Pinto janeiro de 2014 UMinho | 2014 Sobre a distância de Hausdorff e a salsicha de Minkowsky Universidade do Minho Escola de Ciências

Transcript of Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

Page 1: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 2: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 3: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 4: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 5: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 6: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 7: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 8: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 9: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 10: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 11: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 12: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 13: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 14: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 15: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 16: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 17: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 18: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 19: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 20: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 21: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 22: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 23: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 24: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 25: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 26: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 27: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 28: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 29: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 30: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 31: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 32: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 33: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 34: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 35: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 36: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 37: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 38: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 39: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 40: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 41: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 42: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 43: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 44: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 45: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 46: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff 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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 47: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 48: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 49: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 50: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 51: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 52: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 53: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 54: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 55: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 56: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 57: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 58: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 59: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 60: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 61: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 62: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 63: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 64: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 65: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 66: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField
Page 67: Maria Lúcia Pereira Marques Pinto Sobre a distância de Hausdorff e ...

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

  • Capa
  • TeseLuciaPinto
    • Introduccedilatildeo
    • Preliminares
      • Algumas noccedilotildees meacutetricas
      • Conjuntos convexos
        • Distacircncia de Hausdorff e salsicha de Minkowsky
          • A distacircncia de Hausdorff
          • Convergecircncia de sucessotildees de subconjuntos de R2
            • Distacircncia de Hausdorff - uma abordagem computacional
              • Uma interface graacutefica dinacircmica
              • Caracterizaccedilatildeo da funccedilatildeo Eps
              • Aspetos computacionais
                • Representaccedilatildeo graacutefica
                • A funccedilatildeo Eps
                    • Anexo - Funccedilotildees do Mathematica
                    • Bibliografia
                          1. animtiph
                            1. 1
                            2. 2
                            3. 3
                            4. 4
                            5. 5
                            6. 6
                            7. 7
                            8. 8
                            9. 9
                            10. 10
                            11. 11
                            12. 12
                            13. 13
                            14. 14
                            15. 15
                            16. 16
                            17. 17
                            18. 18
                            19. 19
                            20. 20
                              1. ikona
                                1. 1
                                2. 2
                                3. 3
                                4. 44
                                5. 45
                                6. 46
                                7. 47
                                8. 48
                                9. 49
                                  1. TooltipField