Zonkod est conçu pour être simple, rapide et universel. Mais il y a beaucoup de technologie derrière cela. Allons-y !

La Terre divisée en exactement 10 000 surfaces d'une précision similaire: une idée approximative du fonctionnement de Zonkod.

Il y a quelques années, lors d'un voyage, j'ai tenté d'entrer les coordonnées géographiques d'un restaurant dans le système de navigation d'une voiture haut de gamme. Malgré mon diplôme d'ingénieur et mon doctorat, j'ai peiné pendant quinze minutes sans y parvenir.
À ce moment-là, j’ai compris qu’il y avait un vrai problème non résolu. Heureusement, j’ai quand même réussi à dîner ce soir-là ;)

Voilà LA solution : un numéro de téléphone géographique : facile à composer, universel, maîtrisé par tous sur Terre.
Sauf qu'il est extrêmement difficile de diviser une sphère en exactement 100 000 000 000 000 surfaces identiques. En fait, c'est impossible.

Puis vint la deuxième grande idée : oublier les surfaces identiques et se concentrer sur ce qui compte vraiment : la précision.
Prenons un emplacement quelconque. Encodons sa position dans un nombre, puis décodons ce nombre pour obtenir un nouvel emplacement. La seule chose qui compte, c’est que ces deux emplacements ne soient pas trop éloignés. La précision du système entier est la distance maximale entre eux dans le pire des cas. C’est la seule chose importante !
Il devait également être simple et reconnaissable au premier coup d'œil, d'où la précision unique et le ZK: initial.

Une autre contrainte réside dans la facilité d'encodage et de décodage, ainsi que dans la reproductibilité totale. Chaque système (du minuscule dispositif IoT embarqué au téléphone mobile, en passant par l'ordinateur de bureau ou l'ordinateur central) doit fournir systématiquement le même résultat.
Cependant, la précision des ordinateurs est limitée. Pour les calculs scientifiques et techniques, ils utilisent des nombres à virgule flottante. Ces derniers sont également indispensables pour la trigonométrie et d'autres fonctions complexes. Malheureusement, il existe de nombreux systèmes, langages et bibliothèques différents, présentant chacun de subtiles différences. De plus, les systèmes à virgule flottante sont soit lents, soit coûteux, soit les deux.
Donc : pas de trigonométrie, pas de virgule flottante, uniquement de l'arithmétique entière, car c'est la seule et unique solution déterministe.
La conception d'un tel système a été longue, mais elle a finalement abouti. Le résultat, disponible aujourd'hui, est Zonkod. Un brevet est en cours de dépôt pour cette technologie. L'un de ses principaux objectifs est d'établir une norme en garantissant l'existence d'un seul ZK:, mettant ainsi fin aux conflits de formats.
On peut calculer la meilleure précision théorique possible pour une longueur de nombre donnée. Pour 14 chiffres, elle est de 1,5969 m. Le codage Zonkod est quasi parfait : sa précision est de 1,5988 m, soit 99,9 % de l’optimum. Partout. C’est important car cela maximise l’utilité de chaque chiffre.

Zonkod a été implémenté dans de nombreux langages différents, notamment C, JavaScript, WASM, FORTRAN et Python. Ils donnent tous exactement les mêmes résultats, jusqu’au dernier chiffre.
Il a même été porté en COBOL, un langage conçu en 1959 pour la comptabilité d'entreprise, qui n'a jamais été destiné à gérer des calculs géodésiques. Et pourtant, il fonctionne. Si Zonkod fonctionne en COBOL, il fonctionne partout.

La vitesse et la compacité sont également importantes.
Sur un Arduino Nano (8 bits ATmega328P, 16 MHz), un programme complet d'encodage + décodage bare-metal (y compris les E/S et un PRNG) prend 11 956 octets de ROM et 192 octets de RAM.
Il effectue un aller-retour complet en 1,48 ms en moyenne. Sur un téléphone mobile ou un ordinateur de bureau, on descend à la nanoseconde.
Zonkod transforme un problème géométrique difficile en une simple opération entière. Le résultat est un code de localisation assez compact pour un microcontrôleur 8 bits, assez rapide pour fonctionner partout, assez précis pour un usage quotidien, et identique sur tous les appareils de la Terre. Un nombre, une norme, un ZK:.