Struct geod_types::AccurateDegree[][src]

pub struct AccurateDegree { /* fields omitted */ }

The implementation can accurately store either decimal fractions of the degree (with the 10-6 degrees precision) or degree, minute, second (with the 10-2 arcsecond precision).

Implementations

impl AccurateDegree[src]

pub fn with_dms(
    degree: u16,
    minutes: u8,
    seconds: u8,
    centi_seconds: u8
) -> Result<Self, AngleNotInRange>
[src]

Degree, minute, second, centisecond.

Read more

Errors

When some part of the angle is out of scope (e.g. minutes > 60 or degree > 360), the AngleNotInRange returned.

pub fn degrees(self) -> u16[src]

The whole number of degrees in the angle

pub fn deg_fract(self) -> u32[src]

The microdegrees (10-6 degrees) component of the angle

pub fn arc_minutes(self) -> u8[src]

The arc minutes component of the angle.

pub fn arc_seconds(self) -> u8[src]

The arc seconds component of the angle.

pub fn centi_arc_seconds(self) -> u8[src]

The centi arc seconds (1/100-th of the arc second) component of the angle.

Use with caution! The overflow of 0.999_999 degrees intentionally handled incorrectly to keep the degrees value valid. To get the accurate value in such a boundary condition, use deg_min_sec_cas instead.

pub fn deg_min_sec_cas(self) -> (u16, u8, u8, u8)[src]

Parts of the angle as in the DMS scheme.

There is a corner case when the degree part returned is not the same as the result of degrees(): when the angle’s value is too close to a whole degree in terms of internal representation, but still slightly less than it.

However, in terms of the DMS, it is already represented as a whole degree since the distance is too small to be represented in DMS scheme.

 let a = AccurateDegree::try_from(35.999999).unwrap();

 assert_eq!(a.degrees(), 35);
 assert_eq!(a.arc_minutes(), 59);
 assert_eq!(a.arc_seconds(), 59);
 assert_eq!(a.centi_arc_seconds(), 99);

 // the value is closer to 36 than to 35 59'59.99"
 // and therefore rounds up
 assert_eq!(a.deg_min_sec_cas(), (36, 0, 0, 0));

pub fn almost_equal(self, rhs: Self) -> bool[src]

Since the DMS and decimal representation have different granularity, when comparing one with the other we should consider a gap of the half of larger granularity.

Trait Implementations

impl Add<AccurateDegree> for AccurateDegree[src]

type Output = Self

The resulting type after applying the + operator.

impl Angle for AccurateDegree[src]

type NumErr = AngleNotInRange

The error that can appear when representing some part of the angle with a number

type ParseErr = ParseAngleError

The error that can appear while parsing the angle from a string

impl AngleNames for AccurateDegree[src]

impl CheckedAdd for AccurateDegree[src]

impl CheckedSub for AccurateDegree[src]

impl Clone for AccurateDegree[src]

impl Copy for AccurateDegree[src]

impl Debug for AccurateDegree[src]

impl Default for AccurateDegree[src]

impl Display for AccurateDegree[src]

impl Eq for AccurateDegree[src]

impl FromStr for AccurateDegree[src]

type Err = ParseAngleError

The associated error which can be returned from parsing.

impl Into<f64> for AccurateDegree[src]

impl Ord for AccurateDegree[src]

impl PartialEq<AccurateDegree> for AccurateDegree[src]

impl PartialOrd<AccurateDegree> for AccurateDegree[src]

impl StructuralEq for AccurateDegree[src]

impl StructuralPartialEq for AccurateDegree[src]

impl Sub<AccurateDegree> for AccurateDegree[src]

type Output = Self

The resulting type after applying the - operator.

impl TryFrom<[u16; 2]> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<[u16; 3]> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<[u16; 4]> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<(u16, u8, u8, u16)> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<(u16, u8, u8)> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<(u16, u8)> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

impl TryFrom<f64> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

fn try_from(value: f64) -> Result<Self, Self::Error>[src]

Use with caution: the floating numbers has bad precision in the fraction part

impl TryFrom<u16> for AccurateDegree[src]

type Error = AngleNotInRange

The type returned in the event of a conversion error.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.