O Zonkod foi projetado para ser simples, rápido e universal. Mas há muita tecnologia por trás disso. Vamos explorar!

A Terra se dividiu em exatamente 10.000 superfícies de precisão semelhante. Uma ideia aproximada de como Zonkod funciona.

Há alguns anos, durante uma viagem, tentei inserir as coordenadas geográficas de um restaurante no sistema de navegação de um carro de luxo. Apesar de ser engenheiro com doutorado, lutei por quinze minutos sem sucesso.
Naquele momento, percebi que havia um problema real e sem solução. Felizmente, consegui jantar naquela noite ;)

Essa era A solução: um número de telefone geográfico: fácil de discar, universal e dominado por todos na Terra.
Acontece que é extremamente difícil dividir uma esfera em exatamente 100.000.000.000.000 superfícies idênticas. Na verdade, isso é impossível.

Então surgiu a segunda grande ideia: esqueça as superfícies idênticas e concentre-se no que realmente importa: precisão.
Considere uma localização em algum lugar. Codifique essa posição em um número e, em seguida, decodifique esse número de volta para uma nova localização. A única coisa que importa é que essas duas localizações não estejam muito distantes uma da outra. A precisão de todo o sistema é a distância máxima entre elas no pior caso. Isso é a única coisa que importa!
Também tinha que ser simples e reconhecível à primeira vista, daí a precisão simples e o ZK: inicial.

Outra restrição é a facilidade de codificação e decodificação, e a reprodutibilidade completa. Cada sistema (desde um minúsculo dispositivo IoT embarcado até um telefone celular, um computador desktop ou um mainframe) deve fornecer exatamente o mesmo resultado, sempre.
Mas os computadores têm precisão finita. Para computação científica e técnica, eles usam o que é chamado de números de ponto flutuante. Estes também são obrigatórios ao usar trigonometria ou outras funções complexas. Infelizmente, existem muitos sistemas diferentes, muitas linguagens e muitas bibliotecas, todas com pequenas diferenças entre si. Além disso, os sistemas de ponto flutuante são lentos, caros ou ambos.
Portanto: sem trigonometria, sem ponto flutuante, apenas aritmética de inteiros, porque essa é a única solução determinística.
Levou muito tempo para projetar um sistema como esse, mas finalmente foi possível. O resultado, disponível hoje, é Zonkod. Uma patente para essa tecnologia está pendente. Um de seus principais objetivos é estabelecer um padrão, garantindo que exista apenas um único ZK:, sem mais guerras de formatos.
Podemos calcular a melhor precisão teórica possível para um determinado comprimento de número. Para 14 dígitos, ela é de 1,5969 m. A codificação Zonkod é quase perfeita: sua precisão é de 1,5988 m, ou 99,9% do ótimo. Em todos os casos. Isso é importante porque maximiza a utilidade de cada dígito.

O número Zonkod foi implementado em diversas linguagens, incluindo C, JavaScript, WASM, FORTRAN e Python. Todas elas produzem exatamente os mesmos resultados, até o último dígito.
Foi até mesmo adaptado para COBOL, uma linguagem criada em 1959 para contabilidade empresarial, que nunca foi concebida para lidar com cálculos geodésicos. E, no entanto, funciona. Se Zonkod funciona em COBOL, funciona em qualquer lugar.

Velocidade e tamanho compacto também importam.
Em um Arduino Nano (ATmega328P de 8 bits, 16 MHz), um programa completo de codificação e decodificação (incluindo E/S e um gerador de números pseudoaleatórios) ocupa 11.956 bytes de ROM e 192 bytes de RAM.
Ele realiza uma viagem de ida e volta completa em 1,48 ms em média. Em um celular ou computador, esse tempo cai para nanossegundos.
Zonkod transforma um problema geométrico complexo em uma simples operação com números inteiros. O resultado é um código de localização compacto o suficiente para um microcontrolador de 8 bits, rápido o suficiente para rodar em qualquer sistema, preciso o suficiente para o uso diário e idêntico em todos os dispositivos do planeta. Um número, um padrão, um ZK:.