(1/192)*(FD + RD + LD + BD)
--- | We know what (c t6 2 1 0 0) should be from Sorokina and Zeilfelder, p. 87.
--- This test checks the actual value based on the FunctionValues of the cube.
+-- | We know what (c t6 2 1 0 0) should be from Sorokina and
+-- Zeilfelder, p. 87. This test checks the actual value based on
+-- the FunctionValues of the cube.
+--
+-- If 'prop_c_tilde_2100_rotation_correct' passes, then this test is
+-- even meaningful!
prop_c_tilde_2100_correct :: Cube -> Bool
prop_c_tilde_2100_correct cube =
- c t6 2 1 0 0 == (3/8)*int
- + (1/12)*(f + r + l + b)
- + (1/64)*(ft + rt + lt + bt)
- + (7/48)*t + (1/48)*d + (1/96)*(fr + fl + br + bl)
- + (1/192)*(fd + rd + ld + bd)
+ c t6 2 1 0 0 == expected
where
t0 = tetrahedron0 cube
t6 = tetrahedron6 cube
fvs = Tetrahedron.fv t0
- (Cube _ i j k _ _) = cube
- f = value_at fvs (i-1) j k
- b = value_at fvs (i+1) j k
- l = value_at fvs i (j-1) k
- r = value_at fvs i (j+1) k
- d = value_at fvs i j (k-1)
- t = value_at fvs i j (k+1)
- fl = value_at fvs (i-1) (j-1) k
- fr = value_at fvs (i-1) (j+1) k
- fd = value_at fvs (i-1) j (k-1)
- ft = value_at fvs (i-1) j (k+1)
- bl = value_at fvs (i+1) (j-1) k
- br = value_at fvs (i+1) (j+1) k
- bd = value_at fvs (i+1) j (k-1)
- bt = value_at fvs (i+1) j (k+1)
- ld = value_at fvs i (j-1) (k-1)
- lt = value_at fvs i (j-1) (k+1)
- rd = value_at fvs i (j+1) (k-1)
- rt = value_at fvs i (j+1) (k+1)
- fld = value_at fvs (i-1) (j-1) (k-1)
- flt = value_at fvs (i-1) (j-1) (k+1)
- frd = value_at fvs (i-1) (j+1) (k-1)
- frt = value_at fvs (i-1) (j+1) (k+1)
- bld = value_at fvs (i+1) (j-1) (k-1)
- blt = value_at fvs (i+1) (j-1) (k+1)
- brd = value_at fvs (i+1) (j+1) (k-1)
- brt = value_at fvs (i+1) (j+1) (k+1)
- int = value_at fvs i j k
+ expected = eval fvs $
+ (3/8)*I +
+ (1/12)*(F + R + L + B) +
+ (1/64)*(FT + RT + LT + BT) +
+ (7/48)*T +
+ (1/48)*D +
+ (1/96)*(FR + FL + BR + BL) +
+ (1/192)*(FD + RD + LD + BD)
-- Tests to check that the correct edges are incidental.