match areVectorsValid (float32 p1xf) (float32 p1yf) (float32 p2xf) (float32 p2yf) -xDirData.[p1.Y, p1.X] -yDirData.[p1.Y, p1.X] -xDirData.[p2.Y, p2.X] -yDirData.[p2.Y, p2.X] with
| Some (m1, m2) ->
match ellipse p1xf p1yf (float m1) p2xf p2yf (float m2) p3xf p3yf with
match areVectorsValid (float32 p1xf) (float32 p1yf) (float32 p2xf) (float32 p2yf) -xDirData.[p1.Y, p1.X] -yDirData.[p1.Y, p1.X] -xDirData.[p2.Y, p2.X] -yDirData.[p2.Y, p2.X] with
| Some (m1, m2) ->
match ellipse p1xf p1yf (float m1) p2xf p2yf (float m2) p3xf p3yf with