diff -r 7e25f4800af8 -r 5c1ce63114a5 rust/integral-geometry/src/lib.rs --- 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 {