summaryrefslogtreecommitdiff
path: root/src/geom/angle.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-06-11 11:30:18 +0200
committerLaurenz <laurmaedje@gmail.com>2021-06-11 11:30:18 +0200
commit3330767c20e14a05176902a93dcefb08cb509173 (patch)
treeeb40b262d267df0e9f73bbbc4ec602183fd39dff /src/geom/angle.rs
parentc28708aa196eaca247cdab6b5e8af9751b4f1dad (diff)
Remove props in favor of using state for everything
Diffstat (limited to 'src/geom/angle.rs')
-rw-r--r--src/geom/angle.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/geom/angle.rs b/src/geom/angle.rs
index f1db841c..bf8bcc66 100644
--- a/src/geom/angle.rs
+++ b/src/geom/angle.rs
@@ -1,15 +1,18 @@
use super::*;
+use decorum::N64;
/// An angle.
-#[derive(Default, Copy, Clone, PartialEq, PartialOrd)]
+#[derive(Default, Copy, Clone, PartialEq, PartialOrd, Hash)]
pub struct Angle {
/// The angle in raw units.
- raw: f64,
+ raw: N64,
}
impl Angle {
/// The zero angle.
- pub const ZERO: Self = Self { raw: 0.0 };
+ pub fn zero() -> Self {
+ Self { raw: N64::from(0.0) }
+ }
/// Create an angle from a number of radians.
pub fn rad(rad: f64) -> Self {
@@ -23,7 +26,7 @@ impl Angle {
/// Create an angle from a number of raw units.
pub fn raw(raw: f64) -> Self {
- Self { raw }
+ Self { raw: N64::from(raw) }
}
/// Convert this to a number of radians.
@@ -38,17 +41,17 @@ impl Angle {
/// Get the value of this angle in raw units.
pub fn to_raw(self) -> f64 {
- self.raw
+ self.raw.into()
}
/// Create an angle from a value in a unit.
pub fn with_unit(val: f64, unit: AngularUnit) -> Self {
- Self { raw: val * unit.raw_scale() }
+ Self { raw: N64::from(val * unit.raw_scale()) }
}
/// Get the value of this length in unit.
pub fn to_unit(self, unit: AngularUnit) -> f64 {
- self.raw / unit.raw_scale()
+ self.to_raw() / unit.raw_scale()
}
}
@@ -119,7 +122,7 @@ impl Div for Angle {
type Output = f64;
fn div(self, other: Self) -> f64 {
- self.raw / other.raw
+ self.to_raw() / other.to_raw()
}
}
@@ -130,7 +133,7 @@ assign_impl!(Angle /= f64);
impl Sum for Angle {
fn sum<I: Iterator<Item = Angle>>(iter: I) -> Self {
- iter.fold(Angle::ZERO, Add::add)
+ iter.fold(Angle::zero(), Add::add)
}
}
/// Different units of angular measurement.