target-match
Rust library that identifies which catalogued sky objects a telescope frame covers, given a pointing (right ascension / declination) and a field of view.
Matching is by angular position; object names are never used as search keys (a
designation can be carried on a result for display). The crate holds no
catalogue data and performs no I/O: callers supply objects by implementing the
one-method SkyObject trait, and the library computes the geometry — angular
separation, in-frame membership (circular or rectangular, with optional camera
rotation), tangent-plane offsets, and deterministic ranking. The field of view
can be computed from optics (focal length, pixel size, binning, sensor
dimensions), from a pixel scale, or supplied directly. Pointings at any epoch
are precessed to J2000 before matching.
Coordinate and angle types come from the
skymath crate and appear
directly in this crate's API (skymath::Equatorial, skymath::Angle — with
decimal and strict/lenient sexagesimal parsing); skymath is re-exported as
target_match::skymath so a version-matched copy is always available.
API documentation, generated from the source on every release: docs.rs/target-match.
Usage
[]
= "0.2"
use ;
use ;
// Your catalogue type — target-match owns no catalogue data, and never reads the name.
let catalog = ;
// Where the scope pointed (decimal degrees or sexagesimal)...
let pointing = parse_j2000.unwrap;
// ...and how much sky the frame covers (from optics, a pixel scale, or a direct FOV).
let field = from_optics.unwrap;
// Which catalogued object the frame captured, nearest first.
let hits = rank;
assert_eq!;
For a batch of frames against one catalogue, build the index once with
Matcher::from_objects(..) and call .query(pointing, constraint) repeatedly.
See examples/identify.rs for a runnable end-to-end
demo.
Features
serde(off by default) — derivesSerialize/Deserializeon the public match types, and forwards toskymath/serdefor the coordinate types they embed.
Development
Requires a stable Rust toolchain (pinned via rust-toolchain.toml) and, optionally,
just.
License
Licensed under the Apache License, Version 2.0.