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 2a ; 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.