-- store the triangles oriented such that their volume is
-- positive. If T and T-tilde share \<v0,v1,v2\> and v3,v3-tilde
-- point in opposite directions, one of them has to have negative
--- volume! We also switch the third and fourth vertices of t6, but
--- as of now, why this works is a mystery.
+-- volume!
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) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 79, (2.8). See
- ((c t0 1 0 2 0 + c t0 1 0 1 1)/ 2)
where
t0 = tetrahedron0 cube
- t6 = (tetrahedron6 cube) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 79, (2.8). See
- ((c t0 1 0 0 2 + c t0 1 0 1 1)/ 2)
where
t0 = tetrahedron0 cube
- t6 = (tetrahedron6 cube) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 79, (2.8). See
- ((c t0 0 0 3 0 + c t0 0 0 2 1)/ 2)
where
t0 = tetrahedron0 cube
- t6 = (tetrahedron6 cube) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 79, (2.8). See
- ((c t0 0 0 0 3 + c t0 0 0 1 2)/ 2)
where
t0 = tetrahedron0 cube
- t6 = (tetrahedron6 cube) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 79, (2.8). See
((c t0 0 0 1 2 + c t0 0 0 2 1)/ 2)
where
t0 = tetrahedron0 cube
- t6 = (tetrahedron6 cube) { v2 = (v3 t6), v3 = (v2 t6) }
+ t6 = tetrahedron6 cube
-- | Given in Sorokina and Zeilfelder, p. 78.
--- prop_cijk1_identity :: Cube -> Bool
--- prop_cijk1_identity cube =
--- and [ c t0 i j k 1 ~=
--- (c t1 (i+1) j k 0) * ((b0 t0) (v3 t1)) +
--- (c t1 i (j+1) k 0) * ((b1 t0) (v3 t1)) +
--- (c t1 i j (k+1) 0) * ((b2 t0) (v3 t1)) +
--- (c t1 i j k 1) * ((b3 t0) (v3 t1)) | i <- [0..2],
--- j <- [0..2],
--- k <- [0..2],
--- i + j + k == 2]
--- where
--- t0 = tetrahedron0 cube
--- t1 = tetrahedron1 cube
-
+prop_cijk1_identity :: Cube -> Bool
+prop_cijk1_identity cube =
+ and [ c t0 i j k 1 ~=
+ (c t1 (i+1) j k 0) * ((b0 t0) (v3 t1)) +
+ (c t1 i (j+1) k 0) * ((b1 t0) (v3 t1)) +
+ (c t1 i j (k+1) 0) * ((b2 t0) (v3 t1)) +
+ (c t1 i j k 1) * ((b3 t0) (v3 t1)) | i <- [0..2],
+ j <- [0..2],
+ k <- [0..2],
+ i + j + k == 2]
+ where
+ t0 = tetrahedron0 cube
+ t1 = tetrahedron1 cube
-- | The function values at the interior should be the same for all tetrahedra.