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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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
[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
animtiph
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ikona
1
2
3
44
45
46
47
48
49
TooltipField
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