rust/integral-geometry/src/lib.rs
changeset 14106 5c1ce63114a5
parent 14096 133f648c5fbd
child 14107 6a3bcb7c2981
--- a/rust/integral-geometry/src/lib.rs	Sat Nov 03 02:16:13 2018 +0300
+++ b/rust/integral-geometry/src/lib.rs	Sat Nov 03 02:21:45 2018 +0300
@@ -58,6 +58,11 @@
             matrix[2] * self.x + matrix[3] * self.y,
         )
     }
+
+    #[inline]
+    pub fn rotate90(self) -> Self {
+        Point::new(-self.y, self.x)
+    }
 }
 
 #[derive(PartialEq, Eq, Clone, Copy, Debug)]
@@ -416,6 +421,11 @@
     pub fn center(&self) -> Point {
         (self.start + self.end) / 2
     }
+
+    #[inline]
+    pub fn scaled_normal(&self) -> Point {
+        (self.end - self.start).rotate90()
+    }
 }
 
 impl IntoIterator for Line {