Comentários gerais
A descrição abaixo é para curvas à direita. Como você pode imaginar, curva à esquerda são simétricas para curvas à direita.
Definições
a) s-in: o segmento que entra na interseção (junção)
b) s-out: o segmento que sai da interseção (junção)
c) s1, s2 … sN: todos os segmentos conectados a mesma interseção (junção)
d) "Melhor continuação" - veja explicação abaixo
Qual é a "Melhor continuação"?
Para determinar se s-out é a continuação "real" de s-in, fazemos o seguinte:
- Se s-out tem o mesmo tipo e nome da via, então é escolhido como "real";
- Senão, procure os outros segmentos: s3, s4 … sN. Um dele será escolhido como "melhor continuação" que s-out se ambas seguintes condições:
- este segmento tem a melhor coincidência de nome e tipo da via que s-out (ex.: tem o mesmo nome da via e s-out não; tem o mesmo tipo de s-in e s-out não). O nome da via é mais importante que o tipo.
- o ângulo entre esse segmento e s-in é menor que o ângulo entre s-out e s-in
O algoritmo / lista de condições
O algoritmo itera sobre uma lista de condições. Logo que uma condição for satisfeita, a instrução relevante é determinada e o algoritmo termina.
Lista de condições:
1. Se a junção tem apenas 2 segmentos, a instrução é: "CONTINUE".
1.1. Em alguns casos, as junções em T podem ser consideradas como apenas 2 segmentos. Veja a explicação abaixo em "Junções em T".
2. Se o ângulo entre s-out e melhor continuação é maior do que 45 graus (e inferior a 180), a instrução é: "VIRE DIREITA"
2.1 Uma suposição que nas rodovia (Highways) não teremos ângulos que maiores do que 45 graus.
3. Se s-out é determinado a ser a melhor continuação de s-in, a instrução é: "CONTINUE"
4. Se s-in é uma rodovia e s-out não, a instrução é: "SAIA A DIREITA"
5. Se s-in é uma rampa/saída (Ramps) e s-out não é nem rodovia ou rampa/saida, a instrução é: "SAIA A DIREITA"
6. Se nenhuma das condições acima for atendida, a instrução é: "MANTENHA A DIREITA"
T junctions and one way roads
In some cases, a node could have more than 2 segments, but the routing server will consider only 2 of them as valid and therefore, the maneuver will be 'Continue straight'.
Nodes can become locked on specific scenarios - see here Roundabouts for more information.
For example, in this case (image below) - assuming the node is locked - heading south, the right turn will be considered 'Continue straight' as the routing server has no other option and there's only one possible segment to be s-out.
If the node was not locked, most likely that waze would tell you to turn right. Driving against the direction is a high penalty, and so is a left turn where a turn is not allowed. However, it would still have been an option, which is why the routing server would have called it 'turn right'.
This could be confusing, especially since there's no external indication on whether or not a node is locked at the moment. We will add it to the Papyrus soon.