Skip to main content

DeriveReferenceFrame

Derive Macro DeriveReferenceFrame 

Source
#[derive(DeriveReferenceFrame)]
{
    // Attributes available to this derive:
    #[frame]
}
Expand description

Derive macro for implementing ReferenceFrame.

§Example

use affn::ReferenceFrame;

#[derive(Debug, Copy, Clone, ReferenceFrame)]
struct ICRS;

assert_eq!(ICRS::frame_name(), "ICRS");

§Custom Name

#[derive(Debug, Copy, Clone, ReferenceFrame)]
#[frame(name = "International Celestial Reference System")]
struct ICRS;

assert_eq!(ICRS::frame_name(), "International Celestial Reference System");

§SphericalNaming

When polar and azimuth attributes are provided, the macro also implements SphericalNaming:

#[derive(Debug, Copy, Clone, ReferenceFrame)]
#[frame(polar = "dec", azimuth = "ra")]
struct ICRS;

assert_eq!(ICRS::polar_name(), "dec");
assert_eq!(ICRS::azimuth_name(), "ra");
assert_eq!(ICRS::distance_name(), "distance"); // default

With custom distance name:

#[derive(Debug, Copy, Clone, ReferenceFrame)]
#[frame(polar = "lat", azimuth = "lon", distance = "altitude")]
struct ITRF;