k = calculate_containing_cube_coordinate g z
-{-# INLINE zoom_lookup #-}
zoom_lookup :: Values3D -> ScaleFactor -> a -> (R.DIM3 -> Double)
zoom_lookup v3d scale_factor _ =
zoom_result v3d scale_factor
-{-# INLINE zoom_result #-}
zoom_result :: Values3D -> ScaleFactor -> R.DIM3 -> Double
zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) =
f p
| i <- [0..2],
j <- [0..2],
k <- [0..2],
+ c0 <- cs,
t <- tetrahedra c0,
let p = polynomial t,
let i' = fromIntegral i,
let k' = fromIntegral k]
where
g = make_grid 1 trilinear
- c0 = cube_at g 1 1 1
+ cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
test_zeros_reproduced :: Assertion
k <- [0..2],
let i' = fromIntegral i,
let j' = fromIntegral j,
- let k' = fromIntegral k]
+ let k' = fromIntegral k,
+ c0 <- cs,
+ t0 <- tetrahedra c0,
+ let p = polynomial t0 ]
where
g = make_grid 1 zeros
- c0 = cube_at g 1 1 1
- t0 = tetrahedron c0 0
- p = polynomial t0
+ cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
-- | Make sure we can reproduce a 9x9x9 trilinear from the 3x3x3 one.