X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FValues.hs;h=dc45a3f16dd7560e5b5b2d863e212ef6654c30b8;hb=6c6ca17ba52b570cc50c1a9546ee9b6a5d3266fd;hp=bd7c4d66af25ba443a6afe7f72d7bc6885df7f3b;hpb=883ce9d78072c492000de94478189095032b6615;p=spline3.git diff --git a/src/Values.hs b/src/Values.hs index bd7c4d6..dc45a3f 100644 --- a/src/Values.hs +++ b/src/Values.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE TypeSynonymInstances #-} +{-# LANGUAGE FlexibleInstances #-} module Values where @@ -14,13 +14,18 @@ import Data.Array.Repa ( fromList, index, reshape, + size ) -import Data.Array.Repa.IO.Vector (readVectorFromTextFile) +import Data.Array.Repa.IO.Vector (readVectorFromTextFile, + writeVectorToTextFile) import System.FilePath () import Test.QuickCheck (Arbitrary(..), Gen) +import ScaleFactor + + type Values1D = Array DIM1 Double type Values2D = Array DIM2 Double type Values3D = Array DIM3 Double @@ -54,6 +59,12 @@ read_values_3d sh path = do one_d <- read_values_1d path return $ reshape sh one_d +write_values_1d :: Values3D -> FilePath -> IO () +write_values_1d v3d path = do + let size3d = size $ extent v3d + let shape1d = (Z :. size3d) + let v1d = reshape shape1d v3d + writeVectorToTextFile v1d path empty3d :: Values3D empty3d = Data.Array.Repa.fromList (Z :. 0 :. 0 :. 0) [] @@ -72,3 +83,13 @@ idx v3d i j k = where shape :: DIM3 shape = (Z :. i :. j :. k) + + +zoom_shape :: ScaleFactor -> DIM3 -> DIM3 +zoom_shape (sfx, sfy, sfz) sh = + let (Z :. x :. y :. z) = sh + x' = x * sfx + y' = y * sfy + z' = z * sfz + in + (Z :. x' :. y' :. z')