+-- Only used in tests, so we don't need the added speed
+-- of Data.Vector.
+tetrahedra :: Cube -> [Tetrahedron]
+tetrahedra c = [ tetrahedron c n | n <- [0..23] ]
+
+front_left_top_tetrahedra :: Cube -> V.Vector Tetrahedron
+front_left_top_tetrahedra c =
+ V.singleton (tetrahedron c 0) `V.snoc`
+ (tetrahedron c 3) `V.snoc`
+ (tetrahedron c 6) `V.snoc`
+ (tetrahedron c 7) `V.snoc`
+ (tetrahedron c 20) `V.snoc`
+ (tetrahedron c 21)
+
+front_left_down_tetrahedra :: Cube -> V.Vector Tetrahedron
+front_left_down_tetrahedra c =
+ V.singleton (tetrahedron c 0) `V.snoc`
+ (tetrahedron c 2) `V.snoc`
+ (tetrahedron c 3) `V.snoc`
+ (tetrahedron c 12) `V.snoc`
+ (tetrahedron c 15) `V.snoc`
+ (tetrahedron c 21)
+
+front_right_top_tetrahedra :: Cube -> V.Vector Tetrahedron
+front_right_top_tetrahedra c =
+ V.singleton (tetrahedron c 0) `V.snoc`
+ (tetrahedron c 1) `V.snoc`
+ (tetrahedron c 5) `V.snoc`
+ (tetrahedron c 6) `V.snoc`
+ (tetrahedron c 16) `V.snoc`
+ (tetrahedron c 19)
+
+front_right_down_tetrahedra :: Cube -> V.Vector Tetrahedron
+front_right_down_tetrahedra c =
+ V.singleton (tetrahedron c 1) `V.snoc`
+ (tetrahedron c 2) `V.snoc`
+ (tetrahedron c 12) `V.snoc`
+ (tetrahedron c 13) `V.snoc`
+ (tetrahedron c 18) `V.snoc`
+ (tetrahedron c 19)
+
+back_left_top_tetrahedra :: Cube -> V.Vector Tetrahedron
+back_left_top_tetrahedra c =
+ V.singleton (tetrahedron c 0) `V.snoc`
+ (tetrahedron c 3) `V.snoc`
+ (tetrahedron c 6) `V.snoc`
+ (tetrahedron c 7) `V.snoc`
+ (tetrahedron c 20) `V.snoc`
+ (tetrahedron c 21)
+
+back_left_down_tetrahedra :: Cube -> V.Vector Tetrahedron
+back_left_down_tetrahedra c =
+ V.singleton (tetrahedron c 8) `V.snoc`
+ (tetrahedron c 11) `V.snoc`
+ (tetrahedron c 14) `V.snoc`
+ (tetrahedron c 15) `V.snoc`
+ (tetrahedron c 22) `V.snoc`
+ (tetrahedron c 23)
+
+back_right_top_tetrahedra :: Cube -> V.Vector Tetrahedron
+back_right_top_tetrahedra c =
+ V.singleton (tetrahedron c 4) `V.snoc`
+ (tetrahedron c 5) `V.snoc`
+ (tetrahedron c 9) `V.snoc`
+ (tetrahedron c 10) `V.snoc`
+ (tetrahedron c 16) `V.snoc`
+ (tetrahedron c 17)
+
+back_right_down_tetrahedra :: Cube -> V.Vector Tetrahedron
+back_right_down_tetrahedra c =
+ V.singleton (tetrahedron c 8) `V.snoc`
+ (tetrahedron c 9) `V.snoc`
+ (tetrahedron c 13) `V.snoc`
+ (tetrahedron c 14) `V.snoc`
+ (tetrahedron c 17) `V.snoc`
+ (tetrahedron c 18)