diff --git a/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear.ipe b/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear.ipe
new file mode 100644
index 000000000..72b48c494
--- /dev/null
+++ b/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear.ipe
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+
+
+0.5 0 0 0.5 0 0 e
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+
+
+
+
+
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+
+
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+
+
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.3 0 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.3 0 l
+-0.5 -0.333 l
+h
+
+
+
+
+1 0 m
+0 0.333 l
+0 -0.333 l
+h
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+1 0 m
+0 0.333 l
+0 -0.333 l
+h
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear_out.ipe b/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear_out.ipe
new file mode 100644
index 000000000..17bea60f2
--- /dev/null
+++ b/hgeometry/data/test-with-ipe/VoronoiDiagram/colinear_out.ipe
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+0.5 0 0 0.5 0 0 e
+
+0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e
+
+
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+-0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h
+
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+
+
+-0.5 -0.5 m 0.5 -0.5 l 0.5 0.5 l -0.5 0.5 l h
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+-0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h
+
+
+-0.43 -0.57 m 0.57 0.43 l 0.43 0.57 l -0.57 -0.43 l h
+
+-0.43 0.57 m 0.57 -0.43 l 0.43 -0.57 l -0.57 0.43 l h
+
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+-1.0 0.333 m 0 0 l -1.0 -0.333 l
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+-1 0 m -2.0 0.333 l -2.0 -0.333 l h
+
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+-1 0 m -2.0 0.333 l -2.0 -0.333 l h
+
+
+
+
+
+
+-232.000000000000 1000.000000000000 m
+434.666666666666 -1000.000000000000 l
+-178.666666666667 1000.000000000000 m
+488.000000000000 -1000.000000000000 l
+
\ No newline at end of file
diff --git a/hgeometry/data/test-with-ipe/VoronoiDiagram/pair.ipe b/hgeometry/data/test-with-ipe/VoronoiDiagram/pair.ipe
new file mode 100644
index 000000000..4046bd6e5
--- /dev/null
+++ b/hgeometry/data/test-with-ipe/VoronoiDiagram/pair.ipe
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+
+
+0.5 0 0 0.5 0 0 e
+
+
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+
+
+
+
+
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+
+
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+
+
+
+
+
+
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+
+
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+
+
+
+
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.3 0 l
+-0.5 -0.333 l
+h
+
+
+
+
+0.5 0 m
+-0.5 0.333 l
+-0.3 0 l
+-0.5 -0.333 l
+h
+
+
+
+
+1 0 m
+0 0.333 l
+0 -0.333 l
+h
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+1 0 m
+0 0.333 l
+0 -0.333 l
+h
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hgeometry/data/test-with-ipe/VoronoiDiagram/pair_out.ipe b/hgeometry/data/test-with-ipe/VoronoiDiagram/pair_out.ipe
new file mode 100644
index 000000000..509ee694a
--- /dev/null
+++ b/hgeometry/data/test-with-ipe/VoronoiDiagram/pair_out.ipe
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e
+
+
+
+0.6 0 0 0.6 0 0 e
+
+
+
+0.5 0 0 0.5 0 0 e
+
+0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e
+
+
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+-0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h
+
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+
+
+-0.5 -0.5 m 0.5 -0.5 l 0.5 0.5 l -0.5 0.5 l h
+
+-0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h
+-0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h
+
+
+-0.43 -0.57 m 0.57 0.43 l 0.43 0.57 l -0.57 -0.43 l h
+
+-0.43 0.57 m 0.57 -0.43 l 0.43 -0.57 l -0.57 0.43 l h
+
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h
+
+
+-1.0 0.333 m 0 0 l -1.0 -0.333 l
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+-1 0 m -2.0 0.333 l -2.0 -0.333 l h
+
+
+
+0 0 m -1.0 0.333 l -1.0 -0.333 l h
+-1 0 m -2.0 0.333 l -2.0 -0.333 l h
+
+
+
+
+
+
+-226.666666666667 1000.000000000000 m
+440.000000000000 -1000.000000000000 l
+
\ No newline at end of file
diff --git a/hgeometry/test-with-ipe/test/VoronoiDiagram/VoronoiSpec.hs b/hgeometry/test-with-ipe/test/VoronoiDiagram/VoronoiSpec.hs
index c8a1b9bf1..07d8c4650 100644
--- a/hgeometry/test-with-ipe/test/VoronoiDiagram/VoronoiSpec.hs
+++ b/hgeometry/test-with-ipe/test/VoronoiDiagram/VoronoiSpec.hs
@@ -75,6 +75,10 @@ spec = describe "Voronoi diagram tests" $ do
[osp|simple1_out|]
testIpe [osp|foo.ipe|]
[osp|foo_out|]
+ testIpe [osp|colinear.ipe|]
+ [osp|colinear_out|]
+ testIpe [osp|pair.ipe|]
+ [osp|pair_out|]
degenerateTests :: Spec
degenerateTests = describe "degnereate inputs" $ do
@@ -85,7 +89,7 @@ degenerateTests = describe "degnereate inputs" $ do
it "two point diagram" $
voronoiDiagram (NonEmpty.fromList [Point2 1 (2 :: R), Point2 3 2])
`shouldBe`
- AllColinear (Alternating (Point2 1 2) (Vector.fromList [(VerticalLineThrough 2, Point2 3 2)]))
+ AllColinear (Alternating (Point2 1 2) (Vector.fromList [(VerticalLineThrough 2, Point2 3 2)])g)
it "multiple parallel point diagram" $
voronoiDiagram (NonEmpty.fromList [ Point2 x (2 :: R)
| x <- fromInteger <$> [1..10]
diff --git a/todo.org b/todo.org
index 1f2e05b5c..88448fc8b 100644
--- a/todo.org
+++ b/todo.org
@@ -145,10 +145,14 @@ make sure we can report in which hole we are as well
* TODO 3d-lower-envelope
** TODO naive
*** DONE triangulated envelope
-*** TODO handle degeneracies
-*** TODO handle all colinear
+*** DONE handle degeneracies
+*** DONE handle all colinear
*** TODO cyclic sorting of the edges
+
+** TODO set up generating plane graphs so that we I can devbug the separator stuff
+
+
** TODO define tests
*** DONE correctly render a lower envelope/vd with 1 vertex and 3 unbounded edges
*** DONE correctly render bounded edges of some larger set of points