• No results found

Fra ankenemnd til suppleant

In document Logikker i strid (sider 145-152)

Vamos agora definir a relação de ordem entre duas longitudes, uma especificada por um local s (que não no pólo Sul) e outra definida pela intersecção de arcos ha;bi, quando o raio do círculo de varrimento r D s. Esta relação é usada na árvore binária de pesquisa que implementa a

frente de onda para encontrar o arco directamente acima de s.

Definição 9. A comparação de um local s (onde s < / com uma intersecçãoha;bi, tal que

s > a^ s > b, depende da ordem dos locais que a definem.

Quando a  b,ha;bi 2 aC, podendo ocorrer um de dois casos.

 Se s D a, entãoha;biD hb;ai D a, uma vez que os locais de igual latitude são

ordenados por longitude, e tem-se s>ha;bi.

 Senão, tem-se que s > a, e a elipse gerada por a não é um arco geodésico. Nesta

configuração pode acontecer um de três casos (ilustrados na Figura 5.7):

– Se o meridiano principal … aC, a esfera pode ser dividida em três sectores:

Œ0; aŒ, aC, e aC ; 2Œ. Tal como no caso planar, apenas aC causa dificul-

dades, uma vez que, se s pertence ao primeiro ou terceiro sector, então este é

menor ou maior que ha;bi, respectivamente. A comparação com aC faz uso de (5.3):

s<ha;bi, E.a; s/ > E.b; s/ : (5.6)

– Se aCcontém o meridiano principal e ha;bi

 2 Œa; 2Œ, então ou s 2 Œ0; aŒ,

que implica que s < ha;bi, ou s 2 Œa; 2Œ. O último caso é resolvido por

aplicação de (5.6).

– Por último, temos o caso em que aC contém o meridiano principal eha;bi  2

Œ0; a . Se s 2a ; 2Œ então s > ha;bi; caso contrário, s 2

Œ0; a  que é resolvido por (5.6).

5.2. VARRIMENTO ESFÉRICO 67

Para um local situado no pólo Sul, observe-se que qualquer arco da frente de onda lhe está directamente acima. Logo, quando se processa o evento-local correspondente, e por forma a evitar qualquer indeterminação na definição anterior, é suficiente escolher um arco arbitrário para ser intersectado pelo arco do novo local. De facto, como neste caso o círculo de varrimento degenera num ponto, o pólo Sul, a frente de onda coincide com a região de Voronoi de s. Como consequência, o evento-local despoleta uma cascata de eventos-círculo (um para cada vértice de V .s/), todos escalonados para a co-latitude .

De certo modo, há uma inversão no papel do círculo de varrimento quando este cruza o pólo Sul. Quando a esfera é varrida de Norte para Sul, são visitados todos os locais. Depois, no varrimento de Sul para Norte, apenas são processados eventos-círculo e eventos-rotação. Este duplo varrimento é necessário para que as elipses completem o varrimento da esfera. Apesar desta inversão, não há nenhuma descontinuidade no processo de varrimento ao se cruzar o pólo Sul.

5.2.4 Eventos-local e eventos-círculo

O escalonamento e o processamento dos eventos na esfera não diferem muito do caso planar. No entanto, alguns detalhes merecem ser mencionados.

Um evento-local adiciona um novo arco de elipse à frente de onda e, se não é o primeiro, um arco repetido e duas novas intersecções. As intersecções de arcos seguem em direcções opostas e, a não ser que outros eventos se interponham, voltam a juntar-se quando o varri- mento termina. Como esperado, a prioridade de um evento-local é simplesmente a co-latitude do local envolvido.

Um evento-círculo assinala a eliminação de um arco, pela junção de duas intersecções de arcos, e corresponde à intersecção de duas mediatrizes. Determinar se um arco conduz a um evento-círculo não é tão imediato como no caso planar. Agora as duas mediatrizes intersectam-se duas vezes (em posições antípodas) e os caminhos das intersecções têm al- cance limitado (que é metade de um círculo máximo).

Sejam ha;bi e hb;ci as intersecções adjacentes ao arco hbi. Sejam também v e ra;b;c o

centro e o raio do círculo esférico que circunscreve os locais a, b e c (tal que o determinante jEv; Ea Eb; Eb Ec j > 0). Se a  be b > cou a < be b  c, então as duas intersecções

de arcos ha;bi e hb;ci seguem em direcções opostas, o que significa que hbi não desaparece. Qualquer outro caso pode conduzir a um evento-círculo associado a hbi, que será escalonado (com prioridade vC ra;b;c) se uma das seguintes condições for verificada.

1. a D bD c.

As duas intersecções juntam-se num dos pólos. 2. a > b, b < c e v 2 aC\ c .

As duas intersecções seguem uma contra a outra, juntando-se durante os percursos respectivos.

68 CAPÍTULO5. CONSTRUÇÃO DO DIAGRAMA ESFÉRICO

3. a > b, b  ce v 2 aC\ bC.

Os caminhos de cada intersecção (que percorrem longitudes crescentes) juntam-se du- rante os percursos respectivos.

4. a  b, b < ce v 2 b \ c .

Este é o oposto do caso anterior. Ambas as intersecções percorrem pontos de longitude decrescente.

As condições enunciadas dependem da circularidade da frente de onda. Se o arco dividido tem um evento-círculo associado, então o evento é conhecido pelas duas instâncias do arco. Por este motivo, o primeiro e o último arco podem ter dois eventos associados (um evento-círculo e um evento-rotação).

Existe ainda um restrição adicional, que condiciona o escalonamento de eventos-círculo e eventos-rotação: a prioridade de um evento não pode exceder 2 s, onde s é o local

mais a Sul, uma vez que o varrimento termina quando o raio do círculo de varrimento atinge aquele valor. Logo, eventos-círculos e eventos-rotação cuja prioridade (calculada) ultrapassa este limiar não são escalonados.

5.2.5 Cálculo de prioridades

O cálculo das prioridades e a definição da relação de ordem usada na frente de onda dependem da escolha do sistema de coordenadas. Até agora, foi adoptado o sistema de coordenadas esférico por ser a escolha natural para lidar com posições na esfera. Tem, no entanto, dois inconvenientes: requer o uso de funções trigonométricas e depende da comparação de valores não exactos (por exemplo, ). Mas tal como no varrimento circular, estes obstáculos são ultrapassados facilmente recorrendo a coordenadas Cartesianas.

Sejam os locais representados por (ou convertidos para) coordenadas Cartesianas, em que um local a D .a; a/é transformado num vector unitário Ea D .ax; ay; az/. Desta forma, a

relação de ordem entre dois locais a e b (c.f. Definição 8) é dada por:

a > b, 8 ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ < ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ : a:z < b:z a:zD b:z ^ 8 ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ < ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ : by> 0^ .ay < 0_ Ea? Eb < 0/ _ by< 0^ .ay < 0^ Ea? Eb < 0/ _ byD 0 ^ .ay < 0_ bx  0/ (5.7)

De igual modo, transforme-se a prioridade associada a um raio de círculo de varrimento na expressão equivalente dada por (sendo sgn.v/ o sinal do valor v):

5.2. VARRIMENTO ESFÉRICO 69

Desta forma, as prioridades variam de C2 a 2, sendo positivas no varrimento de Norte para Sul, zero no pólo Sul, e negativas quando o círculo de varrimento regressa para Norte. Como consequência, há que trocar a fila com prioridade organizada por mínimos por uma fila com prioridade organizada por máximos na implementação da fila de eventos. Aplicando (5.8) aos três tipos de prioridades, obtêm-se os seguintes resultados.

A prioridade de um evento-local é simplesmente dada por:

…local.a/D 1 C az: (5.9)

Nas condições que determinam o escalonamento de um evento-círculo, apenas uma com- paração não é trivial: a comparação do centro do círculo v com o alcance dos caminhos das intersecções ha;bi e hb;ci. Essas comparações traduzem-se por:

v 2 aC\ bC , Ea0 Ev0 0 ^ Eb0 Ev0 0 v 2 b \ c , Eb0 Ev0 0 ^ Ec0 Ev0  0 (5.10) onde 8 < :

Eu D .Ea Eb/  .Ec Eb/;

Ev D Eu =kEuk; (5.11)

Ev0D .vx; vy/, Ea0 D .ax; ay/?, Eb0D .bx; by/? e Ec0D .cx; cy/?.

A prioridade de um evento-círculo é dada por: …círculo.a; b; c/D 1 C  vz q .1 v2 z/.1 2/; onde n  D Ev  Ea: (5.12) e Ev é dado por (5.11).

Um evento-rotação é gerado sempre que o caminho da primeira ou da última intersecção de arcos da frente de onda cruza o meridiano principal. Se ha;bi é a primeira intersecção de arcos da frente de onda, então é associado um evento-rotação ao arco hai se b > a ^ by > 0.

De igual modo, se ha;bi é a última intersecção de arcos da frente de onda, então é associado um evento-rotação ao arco hbi se a > b ^ ay < 0. Em qualquer dos casos, a prioridade de

um evento-rotação é dada por: …rotação.a; b/D sgn. C /  1C  p.1 2/.1 2/; onde 8 ˆ ˆ < ˆ ˆ : ı D k.ax bx; az bz/k;  D sgn.bz az/ .ax bz azbx/=ı;  D sgn.bz az/ .ax bx/=ı: (5.13)

70 CAPÍTULO5. CONSTRUÇÃO DO DIAGRAMA ESFÉRICO

Algoritmo 3 Construção do diagrama de Voronoi V de um conjunto P de locais na esfera.

1: diagrama: V ; {O diagrama de Voronoi.}

2: árvore: w ; {Árvore vermelha-preta, guarda a frente de onda.} 3: vector: a P:ordenar./ {Locais ordenados por co-latitude (),}

4: {e por longitude (<).}

5: inteiro: k 0 {Posição em a do próximo evento-local.} 6: fila: q ; {Fila com prioridade, para eventos-círculo e rotação.}

7: número: ˛, ˇ {Prioridades.} 8: enquanto k < jP j _ q ¤ ; fazer 9: ˛ .k < jP j/ ? …local.aŒk/: 1 10: ˇ .q ¤ ;/ ? q:prioridade_máxima./ : 1 11: se ˛  ˇ então 12: processar_evento_local.V; w; q; aŒk/ 13: k++

14: senão {w0 identifica o nó arco}

15: .w0; ev/ q:remover_máximo./ {ev indica o tipo de evento}

16: se ev é evento-círculo então 17: processar_evento_círculo.V; w; q; w0/ 18: senão 19: processar_evento_rotação.V; w; q; w0/ 20: fim 21: fim 22: fim 23: V:juntar_par_de_arestas.w/

sendo (5.6) substituído por:

s <ha;bi , ˛jbz szj < ˇjaz szj; onde

8 < : ˛D sx .sx ax/C sy .sy ay/; ˇD sx .sx bx/C sy .sy by/: (5.14)

Concluindo, o uso de coordenadas Cartesianas permite implementar o algoritmo de varri- mento esférico recorrendo apenas às operação aritméticas e à raiz quadrada.

In document Logikker i strid (sider 145-152)