OrbitalCommons / projects / zodiacal
Solve · Rust crate
zodiacal
Blind astrometry in Rust. Recover a field’s pointing, rotation, and plate scale from the pattern of stars, without an initial pointing estimate.
Solve a synthetic star fieldFind your place among the stars.
A sky image has an address, even when you do not know where the camera was pointing. zodiacal matches four-star patterns against a prebuilt catalog index, fits a sky projection, and verifies the proposed alignment.
No pointing prior
Start from an astronomical image or a list of detected source positions.
Multi-scale search
Match geometric patterns across indexes covering different angular scales.
A verified solution
Fit a TAN-WCS projection and evaluate the alignment against catalog positions.
A field of dots. A place in the sky.
Choose a synthetic camera field, rotate it, and ask zodiacal to find its pointing. The solver receives only pixel positions and brightness; the known coordinates stay outside the solver for comparison afterward.
White dots are measured source positions. After a solve, rings mark catalogue matches. The winning quad is labelled A (red), B (green), C (cyan), D (orange); yellow connects A–B.
Ready to match.
What this demo measures
These are synthetic detections from the same reduced Hipparcos catalogue used to build the index. The upstream zodiacal 0.5.1 crate runs directly in WebAssembly to find, verify, and refine a match using its shared least-squares fitting code. Reported error measures synthetic self-consistency, not real-camera accuracy.
The noise option adds 0.6-pixel centroid noise, drops about 8% of stars, and inserts three false detections. Fields are 27° wide. Up to 200 bright detections reach the matcher; its compact index contains 79,077 quads. The engine and index download only when you solve, about 1 MiB before compression. Computation stays in this browser.
For a field anywhere on the sky, open the sky explorer →
Rotate the pattern. Keep the match.
Rotate or resize this four-star pattern. The distances change together, so their ratios stay the same. Geometric invariants make a pattern recognizable before its orientation or scale is known.
AC / AB = 0.4941 in both frames.
An illustration of geometric invariance, not a plate solve. Zodiacal uses normalized four-star hash codes, catalog indexes, projection fitting, and verification. A distance ratio alone is not enough to identify a field.
Add a plate solver to your stack
cargo add zodiacal
To use the published command-line solver, install with the CLI feature:
cargo install zodiacal --features cli --locked
For browser WebAssembly, use the same published solver with native data services disabled. Load the index in memory and run the solver in a worker, as this page does:
zodiacal = { version = "0.5", default-features = false }
Solve an image against a catalog
A solve needs an image and a matching-scale index. Index files contain catalog star positions and geometric hashes; the package does not bundle an all-sky index.
zodiacal solve image.png \
-i my_index_00.zdcl \
-i my_index_01.zdcl \
--timeout 60
-
Extract sources
Find candidate point sources in the image.
-
Match patterns
Form quads and search a kd-tree of catalog patterns.
-
Fit the sky
Use matched correspondences to compute a TAN-WCS projection.
-
Verify
Check the proposed alignment against known catalog positions.
From source detection to a sky solution
Index choice matters: its angular scales must cover the field you want to solve. Build index files from a starfield binary catalog, and keep field size, limiting magnitude, memory, and search timeout in mind.
| Input / output | Description |
|---|---|
| Image or source list | An astronomical image, or detected source positions. |
| Catalog index | Prebuilt .zdcl files covering the relevant angular scales. |
| WCS solution | Pointing, orientation, and plate scale in a tangent-plane projection. |
| Verification | A catalog-based log-odds check of the proposed match. |
Build your first index → · Read the benchmark conditions and results →
Examples and feature notes reviewed against zodiacal 0.5.1. Source & contributions →
Build on catalogs, coordinates, and time.