Zonkod logo Zonkod
←
Tecnologia

Semplice in apparenza. Profondo nel profondo.

Zonkod è progettato per essere semplice, veloce e universale. Ma dietro c'è molta tecnologia. Scopriamola insieme!

Zonkod technology overview

La Terra divisa in esattamente 10.000 superfici di precisione simile. Un'idea approssimativa di come funziona Zonkod.

L'ispirazione

An old GPS device on a car dashboard at sunset
Quindici minuti, nessun risultato. Il problema era reale.

Alcuni anni fa, durante un viaggio, ho provato a inserire le coordinate geografiche di un ristorante nel sistema di navigazione di un'auto di lusso. Nonostante fossi un ingegnere con un dottorato di ricerca, ho faticato per quindici minuti senza riuscirci.

In quel momento, ho capito che c'era un problema reale e irrisolto. Per fortuna, quella sera sono riuscito a cenare ;)

La prima idea: un numero di telefono geografico

A rotary dial whose digits beam down to a place on Earth
Componi un numero di telefono, come quando componi un numero di telefono.

Quella era LA soluzione: un numero di telefono geografico: facile da comporre, universale, padroneggiato da chiunque sulla Terra.

Solo che è estremamente difficile dividere una sfera in esattamente 100.000.000.000.000 superfici identiche. Anzi, è impossibile.

La seconda idea: la precisione prima della perfezione.

A caliper measuring a small globe, pin at the measured point
La Terra, misurata come un componente di una macchina.

Poi arrivò la seconda grande idea: dimenticatevi delle superfici identiche e concentratevi su ciò che conta davvero: la precisione.

Prendi una posizione. Codifica la sua posizione in un numero, poi decodifica quel numero per ottenere una nuova posizione. L'unica cosa che conta è che le due posizioni non siano troppo distanti tra loro. La precisione dell'intero sistema è data dalla massima distanza tra di esse nel caso peggiore. Questa è l'unica cosa che conta!

Doveva inoltre essere semplice e riconoscibile a prima vista, da qui la precisione singola e lo ZK: iniziale.

Niente trigonometria. Niente numeri in virgola mobile. Mai.

A glowing integer grid with the ZK pin on an exact intersection
Esattamente per costruzione: il perno si ferma su un incrocio di numeri interi.

Un altro vincolo è la facilità di codifica e decodifica e la piena riproducibilità. Ogni sistema (da un minuscolo dispositivo IoT integrato a un telefono cellulare, un computer desktop o un mainframe) deve fornire sempre esattamente lo stesso risultato.

Ma i computer hanno una precisione finita. Per il calcolo scientifico e tecnico, si utilizzano i cosiddetti numeri in virgola mobile. Questi sono indispensabili anche quando si utilizzano la trigonometria o altre funzioni complesse. Sfortunatamente, esistono molti sistemi, linguaggi e librerie diversi, ognuno con minime differenze. Oltretutto, i sistemi in virgola mobile sono lenti, costosi o entrambi.

Quindi: niente trigonometria, niente numeri in virgola mobile, solo aritmetica intera, perché è l'unica soluzione deterministica.

Un unico standard. Niente VHS contro Betamax.

Ci è voluto molto tempo per progettare un sistema del genere, ma alla fine ci si è riusciti. Il risultato, disponibile oggi, è Zonkod. È in corso la procedura di brevetto per questa tecnologia. Uno dei suoi obiettivi principali è quello di stabilire uno standard garantendo l'esistenza di un solo ZK:, senza più guerre di formato.

Precisione pressoché perfetta

Possiamo calcolare la migliore precisione teorica possibile per una data lunghezza di numero. Per 14 cifre, è 1,5969 m. La codifica Zonkod è quasi perfetta: la sua precisione è 1,5988 m, ovvero il 99,9% dell'ottimo. Ovunque. Questo è importante perché massimizza l'utilità di ogni cifra.

1.5988 m
precisione effettiva
1.5969 m
ottimo teorico
99.9%
Di alta qualità

Verificato su tutte le piattaforme

Devices from phone to retro computer sharing the same ZK pin
Lo stesso risultato su ogni macchina, fino all'ultima cifra.

Zonkod è stato implementato in molti linguaggi diversi, tra cui C, JavaScript, WASM, FORTRAN e Python. Tutti forniscono esattamente gli stessi risultati, fino all'ultima cifra.

È stato persino adattato al COBOL, un linguaggio progettato nel 1959 per la contabilità aziendale, che non era mai stato concepito per gestire calcoli geodetici. Eppure, funziona. Se Zonkod funziona in COBOL, funziona ovunque.

Piccolo, veloce, ovunque

Arduino Nano running Zonkod
Un minuscolo Arduino Nano che esegue Zonkod

Anche la velocità e la compattezza sono importanti.

Su un Arduino Nano (ATmega328P a 8 bit, 16 MHz), un programma completo di codifica e decodifica bare-metal (inclusi I/O e un generatore di numeri pseudo-casuali) richiede 11.956 byte di ROM e 192 byte di RAM.

Raggiunge un ciclo completo di andata e ritorno in 1,48 ms in media. Su un telefono cellulare o un computer desktop, si scende ai nanosecondi.

In definitiva

Zonkod trasforma un difficile problema geometrico in una semplice operazione con numeri interi. Il risultato è un codice di posizione sufficientemente compatto per un microcontrollore a 8 bit, abbastanza veloce da funzionare su qualsiasi sistema, abbastanza preciso per l'uso quotidiano e identico su ogni dispositivo sulla Terra. Un numero, uno standard, un ZK:.