]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Tests/Cube.hs
Move the (2.8) tests from Face to Cube.
[spline3.git] / src / Tests / Cube.hs
index 666fde8899c168f85b061430ce06f5ee3ca93e1f..888c48f4840d54ec62f95f0f3e4aa0fe17519e7c 100644 (file)
@@ -341,6 +341,146 @@ prop_c2100_identity1 cube =
 
 
 
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c0102_identity1 :: Cube -> Bool
+prop_c0102_identity1 cube =
+    c t0 0 1 0 2 ~= (c t0 0 0 1 2 + c t1 0 0 2 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c0201_identity1 :: Cube -> Bool
+prop_c0201_identity1 cube =
+    c t0 0 2 0 1 ~= (c t0 0 1 1 1 + c t1 0 1 1 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c0300_identity2 :: Cube -> Bool
+prop_c0300_identity2 cube =
+    c t0 0 3 0 0 ~= (c t0 0 2 1 0 + c t1 0 2 0 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c1101_identity :: Cube -> Bool
+prop_c1101_identity cube =
+    c t0 1 1 0 1 ~= (c t0 1 0 1 1 + c t1 1 0 1 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c1200_identity2 :: Cube -> Bool
+prop_c1200_identity2 cube =
+    c t0 1 2 0 0 ~= (c t0 1 1 1 0 + c t1 1 1 0 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79. Note that the third and
+--   fourth indices of c-t1 have been switched. This is because we
+--   store the triangles oriented such that their volume is
+--   positive. If T and T-tilde share <v0,v1,v3> and v2,v2-tilde point
+--   in opposite directions, one of them has to have negative volume!
+prop_c2100_identity2 :: Cube -> Bool
+prop_c2100_identity2 cube =
+    c t0 2 1 0 0 ~= (c t0 2 0 1 0 + c t1 2 0 0 1) / 2
+      where
+        t0 = tetrahedron0 cube
+        t1 = tetrahedron1 cube
+
+
+prop_t0_shares_edge_with_t6 :: Cube -> Bool
+prop_t0_shares_edge_with_t6 cube =
+    (v2 t0) == (v3 t6) && (v3 t0) == (v2 t6)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c3000_identity :: Cube -> Bool
+prop_c3000_identity cube =
+    c t0 3 0 0 0 ~= c t0 2 1 0 0 + c t6 2 1 0 0 - ((c t0 2 0 1 0 + c t0 2 0 0 1)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c2010_identity :: Cube -> Bool
+prop_c2010_identity cube =
+    c t0 2 0 1 0 ~= c t0 1 1 1 0 + c t6 1 1 1 0 - ((c t0 1 0 2 0 + c t0 1 0 1 1)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c2001_identity :: Cube -> Bool
+prop_c2001_identity cube =
+    c t0 2 0 0 1 ~= c t0 1 1 0 1 + c t6 1 1 0 1 - ((c t0 1 0 0 2 + c t0 1 0 1 1)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c1020_identity :: Cube -> Bool
+prop_c1020_identity cube =
+    c t0 1 0 2 0 ~= c t0 0 1 2 0 + c t6 0 1 2 0 - ((c t0 0 0 3 0 + c t0 0 0 2 1)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c1002_identity :: Cube -> Bool
+prop_c1002_identity cube =
+    c t0 1 0 0 2 ~= c t0 0 1 0 2 + c t6 0 1 0 2 - ((c t0 0 0 0 3 + c t0 0 0 1 2)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+-- | Given in Sorokina and Zeilfelder, p. 79.
+prop_c1011_identity :: Cube -> Bool
+prop_c1011_identity cube =
+    c t0 1 0 1 1 ~= c t0 0 1 1 1 + c t6 0 1 1 1 - ((c t0 0 0 1 2 + c t0 0 0 2 1)/ 2)
+      where
+        t0 = tetrahedron0 cube
+        t6 = tetrahedron6 cube
+
+
+
 -- | Given in Sorokina and Zeilfelder, p. 78.
 -- prop_cijk1_identity :: Cube -> Bool
 -- prop_cijk1_identity cube =