]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Add the Misc.transpose_xz function.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 28 Aug 2011 22:49:43 +0000 (18:49 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 28 Aug 2011 22:49:43 +0000 (18:49 -0400)
src/Misc.hs

index 34c682e31a7609e590898311885ea397fed1f6c4..d3c716283b624449276ae25e1fd271187cf43efb 100644 (file)
@@ -35,6 +35,20 @@ flatten :: [[[a]]] -> [a]
 flatten xs = concat $ concat xs
 
 
+-- | Switch the x and z dimensions of a three-dimensional list.
+transpose_xz :: [[[a]]] -> [[[a]]]
+transpose_xz [] = []
+transpose_xz [[]] = [[]]
+transpose_xz [[[]]] = [[[]]]
+transpose_xz m =
+    [[[ m !! x !! y !! z | x <- [0..xsize]]
+                      | y <- [0..ysize]]
+                      | z <- [0..zsize]]
+    where
+      zsize = (length m) - 1
+      ysize = (length (m !! 0))- 1
+      xsize = (length ((m !! 0) !! 0)) - 1
+
 -- | Takes a list, and returns True if its elements are pairwise
 --   equal. Returns False otherwise.
 all_equal :: (Eq a) => [a] -> Bool