X-Git-Url: http://gitweb.michael.orlitzky.com/?p=spline3.git;a=blobdiff_plain;f=src%2FGrid.hs;h=953c6a3d56f35978638f50d730814920c2a256dc;hp=192bbaf8d3ac4e5dd5e48cac776726e414c4171c;hb=b6ce041d136d56fb3d0638c4abadbae64b94b2e5;hpb=3544d15ebbd0176c9aac2fd0e0e94468abc56879 diff --git a/src/Grid.hs b/src/Grid.hs index 192bbaf..953c6a3 100644 --- a/src/Grid.hs +++ b/src/Grid.hs @@ -118,15 +118,19 @@ zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) = f = polynomial t -zoom :: Values3D -> ScaleFactor -> Values3D +-- +-- Instead of IO, we could get away with a generic monad 'm' +-- here. However, /we/ only call this function from within IO. +-- +zoom :: Values3D -> ScaleFactor -> IO Values3D zoom v3d scale_factor - | xsize == 0 || ysize == 0 || zsize == 0 = empty3d + | xsize == 0 || ysize == 0 || zsize == 0 = return empty3d | otherwise = - R.computeS $ R.unsafeTraverse v3d transExtent f - where - (xsize, ysize, zsize) = dims v3d - transExtent = zoom_shape scale_factor - f = zoom_lookup v3d scale_factor + R.computeUnboxedP $ R.unsafeTraverse v3d transExtent f + where + (xsize, ysize, zsize) = dims v3d + transExtent = zoom_shape scale_factor + f = zoom_lookup v3d scale_factor -- | Check all coefficients of tetrahedron0 belonging to the cube