chiark / gitweb /
geometry: Provide len
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 21:41:38 +0000 (22:41 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 22:02:34 +0000 (23:02 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
base/geometry.rs

index ab5527aaadd70f68c9b067634c35d5c1fb3e86ef..6d424f0649b7f0037e095d4b19c1616db0c87df3 100644 (file)
@@ -113,6 +113,14 @@ impl<T> PosC<T> {
         b.checked_add(c2)
       })?
   }
+
+  #[throws(CoordinateOverflow)]
+  pub fn len(self) -> f64 where PosC<T>: PosPromote {
+    let d2 = self.len2()?;
+    let d = d2.sqrt();
+    if !d.is_finite() { throw!(CoordinateOverflow) }
+    d
+  }
 }
 impl<T> PosC<T> where T: Copy {
   pub fn x(self) -> T { self.coords[0] }