pub fn length(self) -> f64 {
((self.x * self.x) + (self.y * self.y)).sqrt()
}
+
+ pub fn to_i32(self) -> Point2D<i32> {
+ Point2D {
+ x: self.x as i32,
+ y: self.y as i32,
+ }
+ }
}
macro_rules! point_op {
}
}
+impl<T> From<Point2D<T>> for (T, T) {
+ fn from(item: Point2D<T>) -> Self {
+ (item.x, item.y)
+ }
+}
+
impl From<Degrees> for Point2D<f64> {
fn from(item: Degrees) -> Self {
Point2D {
}
}
-#[derive(Debug, PartialEq, Clone, Copy)]
-struct Degrees(f64);
-#[derive(Debug, PartialEq, Clone, Copy)]
-struct Radians(f64);
+#[derive(Debug, Default, PartialEq, Clone, Copy)]
+pub struct Degrees(pub f64);
+#[derive(Debug, Default, PartialEq, Clone, Copy)]
+pub struct Radians(pub f64);
impl Degrees {
+ #[allow(dead_code)]
fn to_radians(&self) -> Radians {
Radians(self.0 * std::f64::consts::PI / 180.0)
}
}
impl Radians {
+ #[allow(dead_code)]
fn to_degrees(&self) -> Degrees {
Degrees(self.0 * 180.0 * std::f64::consts::FRAC_1_PI)
}