Zonkodは、シンプルで高速、そして汎用性を重視して設計されています。しかし、その背後には多くの技術が詰まっています。詳しく見ていきましょう!

地球は、ほぼ同じ精度で正確に10,000個の面に分割されました。Zonkod がどのように機能するかの概略です。

数年前、旅行中に高級車のナビゲーションシステムにレストランの地理座標を入力しようとしたことがあった。博士号を持つエンジニアであるにもかかわらず、15分間も格闘したが、結局うまくいかなかった。
その時、私は本当に解決されていない問題があることに気づきました。幸いにも、その日の夕食はちゃんと食べられました ;)

それがまさに解決策だった。地理的な電話番号:ダイヤルしやすく、普遍的で、地球上の誰もが使いこなせる番号。
しかし、球体を正確に100,000,000,000,000個の同一の面に分割することは、非常に困難である。実際、それは不可能である。

そして、2つ目の素晴らしいアイデアが生まれました。それは、表面の均一性にこだわるのをやめ、本当に重要なこと、つまり精度に焦点を当てるというものでした。
ある場所を例にとってみましょう。その位置を数値にエンコードし、その数値をデコードして新しい場所に復元します。重要なのは、その2つの場所があまり離れていないことだけです。システム全体の精度は、最悪の場合における2つの場所間の最大距離によって決まります。これが唯一重要な点です!
また、一目で分かりやすく、シンプルである必要があったため、単精度浮動小数点数と先頭の**ZK:**が用いられました。

もう一つの制約は、エンコードとデコードの容易さ、そして完全な再現性です。あらゆるシステム(小型の組み込みIoTデバイスから携帯電話、デスクトップコンピュータ、メインフレームまで)は、常にまったく同じ結果を出力しなければなりません。
しかし、コンピュータの精度には限界があります。科学技術計算では、浮動小数点数と呼ばれるものを使用します。三角関数やその他の特殊な関数を使用する場合にも、浮動小数点数は必須です。残念ながら、システム、言語、ライブラリは多種多様で、それぞれにわずかな違いがあります。さらに、浮動小数点システムは、処理速度が遅かったり、コストが高かったり、あるいはその両方だったりします。
つまり、三角関数も浮動小数点も使わず、整数演算のみ、なぜならそれが唯一の決定論的な解法だからだ。
このようなシステムの設計には長い時間がかかりましたが、最終的に成功しました。現在利用可能な成果はZonkodです。この技術は特許出願中です。その主要な目標の一つは、フォーマット戦争をなくし、ZK:を一つだけ存在させることで標準を確立することです。
与えられた桁数に対して、理論上可能な最高の精度を計算できます。14桁の場合、1.5969 mです。Zonkodエンコーディングはほぼ完璧で、その精度は1.5988 m、つまり最適値の**99.9%**です。あらゆる場所で。これは、各桁の有用性を最大限に高めるため重要です。

Zonkod は、C、JavaScript、WASM、FORTRAN、Python など、さまざまな言語で実装されています。それらはすべて、最後の桁まで含めてまったく同じ結果を返します。
1959年にビジネス会計用に設計された言語であるCOBOLにも移植されています。COBOLは測地線計算を扱うことを想定して作られた言語ではありません。それでも、動作します。ZonkodがCOBOLで動作するなら、どこでも動作するはずです。

スピードとコンパクトさも重要です。
Arduino Nano(8ビットATmega328P、16MHz)では、ベアメタルでの完全なエンコード+デコードプログラム(I/OとPRNGを含む)は、11,956バイトのROMと192バイトのRAMを必要とします。
平均で1.48ミリ秒で往復通信を完了します。スマートフォンやデスクトップパソコンでは、ナノ秒単位まで短縮されます。
Zonkod は、複雑な幾何学問題を単純な整数演算に変換します。その結果、8ビットマイクロコントローラで動作するのに十分なコンパクトさ、あらゆるシステムで動作するのに十分な速さ、日常使用に十分な精度、そして地球上のすべてのデバイスで同一のロケーションコードが実現します。1つの数値、1つの標準、1つの ZK:。