Skip to main content

SkyObject

Trait SkyObject 

Source
pub trait SkyObject {
    // Required method
    fn position(&self) -> Equatorial;
}
Expand description

A catalogue object that can be matched by sky position.

The trait exposes only a J2000 position — matching never reads a name or designation. A caller’s own type keeps its identity; a Match borrows it.

§Example

use skymath::{Angle, Equatorial};
use target_match::SkyObject;

struct Target {
    name: &'static str,
    ra: f64,
    dec: f64,
}
impl SkyObject for Target {
    fn position(&self) -> Equatorial {
        Equatorial::j2000(Angle::from_degrees(self.ra), Angle::from_degrees(self.dec)).unwrap()
    }
}

let m31 = Target { name: "M 31", ra: 10.6847, dec: 41.2688 };
assert!((m31.position().ra().degrees() - 10.6847).abs() < 1e-9);

Required Methods§

Source

fn position(&self) -> Equatorial

The object’s J2000 equatorial position — the only thing rank, is_framed, and Matcher read from an implementer.

§Example
use skymath::{Angle, Equatorial};
use target_match::SkyObject;

struct Target { ra_deg: f64, dec_deg: f64 }
impl SkyObject for Target {
    fn position(&self) -> Equatorial {
        Equatorial::j2000(Angle::from_degrees(self.ra_deg), Angle::from_degrees(self.dec_deg)).unwrap()
    }
}

let m31 = Target { ra_deg: 10.6847, dec_deg: 41.2688 };
assert!((m31.position().ra().degrees() - 10.6847).abs() < 1e-9);

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§