Skip to main content

Universal Voxel Identifier (UVoxID) — deterministic 192-bit coordinate system for spherical space

Project description

UVoxID

PyPI version Python versions License Tests

Universal Voxel Identifier (UVoxID) — a Python library for encoding and decoding spherical spatial coordinates at micrometer precision.

Think of it as a globally consistent voxel address system: every point in space has a permanent ID, valid from the Earth’s core to interstellar distances.


✨ Why UVoxID?

Floating-point coordinates drift.
Game engines rely on “floating origins.”
Robotics uses hacky spatial hashes.
Satellites juggle dozens of reference frames.

UVoxID fixes all that with a deterministic, integer-based addressing scheme:

  • Universal: same scheme works for atoms, cities, and galaxies.
  • Deterministic: encode/decode is exact, no rounding error.
  • Persistent: voxel IDs never change, perfect for storage, sync, and replication.
  • Spherical-native: gravity, orbits, and planetary geometry “just work.”

🔬 Resolution in UVoxID

UVoxID encodes space into deterministic voxels with two kinds of precision:

  • Radial precision:

    • Always 1 µm (1/1000 mm), no matter the distance.
    • From Earth’s core to interstellar space, every radial step is exact.
  • Angular precision:

    • Depends on radius r.
    • At small r → atomic/subatomic detail.
    • At large r → still millimeter-scale voxels, even across light-years.

📊 Example Resolutions

Distance (r) Radial Resolution Angular Resolution
Earth radius (~6,371 km) 1 µm ~2 × 10⁻¹² m (2 picometers, subatomic)
Moon distance (~384,000 km) 1 µm ~1 × 10⁻¹⁰ m (0.1 nanometer, X-ray scale)
1 AU (~150 million km) 1 µm ~5 × 10⁻⁸ m (50 nanometers, virus scale)
1 light year 1 µm ~3 × 10⁻³ m (3 millimeters)
2 light years (max) 1 µm ~6 × 10⁻³ m (6 millimeters)

⚡ Why This Matters

  • No floats, no drift → everything is stored as integers.
  • Near Earth, UVoxID gives atomic-level positioning.
  • Across interstellar distances, UVoxID still holds positions with millimeter precision.
  • This combination makes it ideal for:
    • physics & materials simulations,
    • planetary & orbital mechanics,
    • infinite game worlds,
    • robotics & autonomous navigation.

🚀 Use Cases

  • Game Development:

    • Infinite open worlds without floating origin hacks.
    • Warp across star systems — arrive exactly where you should.
    • Persistent object positions across server restarts.
  • Robotics & Drones:

    • Drop GPS/SLAM noise into a stable global grid.
    • Share maps between agents without coordinate drift.
  • Satellites & Space Systems:

    • Orbital mechanics with deterministic precision.
    • Consistent addressing across LEO, GEO, Moon, Mars, and beyond.
  • Scientific Simulation:

    • Track bacteria at µm scale or galaxies at light-year scale.
    • Perfect for physics engines, material degradation models, or climate sims.
  • Digital Real Estate & Virtual Worlds:

    • Each voxel ID is globally unique and ownable.
    • Imagine buying a square meter on Mars… and knowing its exact ID forever.

🛠 Features

  • 192-bit encoding: (radius, latitude, longitude) → one integer.
  • String encodings: Base32, hex, or binary.
  • Ephemeris support: Sun & Moon positions → UV, tides, day/night cycles.
  • Earth model: WGS84 ellipsoid radius corrections.
  • Scale introspection: compute what resolution a given ID represents.

📦 Installation

pip install uvoxid

🔍 Example

import uvoxid

EARTH_RADIUS_UM = 6_371_000_000_000  # mean radius in µm

# Encode position at Earth’s surface, equator, prime meridian
addr = uvoxid.encode_uvoxid(EARTH_RADIUS_UM, 0, 0)

print("Hex:", uvoxid.uvoxid_to_hex(addr))
print("Base32:", uvoxid.uvoxid_to_b32(addr))

r_um, lat, lon = uvoxid.decode_uvoxid(addr)
print("Decoded:", r_um, lat/1e6, lon/1e6)

Output:

Hex: 00059fb8c83f1000-00000000055d4a80-0000000000aba950
Base32: uvoxid:AAAALS25GEPAA-AAAAAAAFLVFIA-AAAAAAAKXKKQA
Decoded: 6371000000000 0.0 0.0

📖 Roadmap

  • Planetary/stellar models beyond Earth/Moon/Sun.
  • Python bindings for Rust/C++ core for performance.
  • Optional Morton-code compatibility for indexing.
  • Support for >192-bit scales (atomic → galactic cluster).

🤝 Contributing

Contributions are welcome!

  • Open an issue for bugs/feature requests.
  • Submit pull requests for improvements.

📎 Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uvoxid-0.1.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uvoxid-0.1.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file uvoxid-0.1.0.tar.gz.

File metadata

  • Download URL: uvoxid-0.1.0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for uvoxid-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0f26ba36507ed00b2951b6f524c369bc0e951edfad1ff931a2564d473fc90e1d
MD5 68e3256902a99c4d16ba42312a72bfb9
BLAKE2b-256 fc239558b33b17a72af88bc4f7821b27ce3d5e50b05a00f18f0971cb481a84b4

See more details on using hashes here.

File details

Details for the file uvoxid-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: uvoxid-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for uvoxid-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07c089f4c6f41814187525b9a91c1bc35d4d1437378b6bed1271e256158980a9
MD5 65bc2464a504210ce6b93c8bb80378d2
BLAKE2b-256 e3488e50653252a2998ae9814696f722c2f1122b145e4c6a237a81a09561568b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page