1 {-# LANGUAGE FlexibleInstances #-}
14 import Data.Array.Repa (
25 import System.FilePath ()
26 import Test.QuickCheck (Arbitrary(..), Gen, choose, vectorOf)
29 import ScaleFactor (ScaleFactor)
32 type Values sh = Array U sh Double
33 type Values2D = Values DIM2
34 type Values3D = Values DIM3
37 instance Arbitrary Values3D where
39 -- I declare not to care about empty lists.
40 x_dim <- choose (1, 27)
41 y_dim <- choose (1, 27)
42 z_dim <- choose (1, 27)
43 elements <- vectorOf (x_dim * y_dim * z_dim) (arbitrary :: Gen Double)
44 let new_shape = (Z :. x_dim :. y_dim :. z_dim)
45 let three_d = Data.Array.Repa.fromListUnboxed new_shape elements
50 empty3d = Data.Array.Repa.fromListUnboxed (Z :. 0 :. 0 :. 0) []
53 dims :: Values3D -> (Int, Int, Int)
55 let (Z :. x :. y :. z) = extent v3d
60 idx :: Values3D -> Int -> Int -> Int -> Double
65 shape = (Z :. i :. j :. k)
68 zoom_shape :: ScaleFactor -> DIM3 -> DIM3
69 zoom_shape (sfx, sfy, sfz) sh =
70 let (Z :. x :. y :. z) = sh