Fix some approximation issues.
[master-thesis.git] / Parasitemia / ParasitemiaCore / Utils.fs
index bf245aa..2af692d 100644 (file)
@@ -1,5 +1,7 @@
 module ParasitemiaCore.Utils
 
+open System
+
 open Types
 
 let inline roundInt v = v |> round |> int
@@ -7,24 +9,24 @@ let inline roundInt v = v |> round |> int
 let inline dprintfn fmt =
     Printf.ksprintf System.Diagnostics.Debug.WriteLine fmt
 
-let inline lineFromTwoPoints (p1: PointD) (p2: PointD) : Line =
+let inline lineFromTwoPoints (p1: PointF) (p2: PointF) : Line =
     let a = (p1.Y - p2.Y) / (p1.X - p2.X)
     let b = -(p2.X * p1.Y - p1.X * p2.Y) / (p1.X - p2.X)
     Line(a, b)
 
-let inline pointFromTwoLines (l1: Line) (l2: Line) : PointD =
+let inline pointFromTwoLines (l1: Line) (l2: Line) : PointF =
     let x = -(l1.B - l2.B) / (l1.A - l2.A)
     let y = -(l2.A * l1.B - l1.A * l2.B) / (l1.A - l2.A)
-    PointD(x, y)
+    PointF(x, y)
 
-let inline linePassThroughSegment (l: Line) (p1: PointD) (p2: PointD) : bool =
+let inline linePassThroughSegment (l: Line) (p1: PointF) (p2: PointF) : bool =
     let p = pointFromTwoLines l (lineFromTwoPoints p1 p2)
     sign (p.X - p1.X) <> sign (p.X - p2.X)
 
-let inline squaredDistanceTwoPoints (p1: PointD) (p2: PointD) =
+let inline squaredDistanceTwoPoints (p1: PointF) (p2: PointF) =
     (p1.X - p2.X) ** 2.f + (p1.Y - p2.Y) ** 2.f
 
-let inline distanceTwoPoints (p1: PointD) (p2: PointD) =
+let inline distanceTwoPoints (p1: PointF) (p2: PointF) =
     squaredDistanceTwoPoints p1 p2 |> sqrt
 
 let countCells (cells: Cell list) : int * int =