]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Fix (I think) the cube offset issue.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Sep 2011 16:41:17 +0000 (12:41 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Sep 2011 16:41:17 +0000 (12:41 -0400)
src/Grid.hs

index d9fa975eedc7498989d601394b7e686c72ff0d41..d87114fb2915903b8244fd9d86e3fa66b881905e 100644 (file)
@@ -98,8 +98,8 @@ calculate_containing_cube_coordinate g coord
     -- Don't use a cube on the boundary if we can help it. This
     -- returns cube #1 if we would have returned cube #0 and cube #1
     -- exists.
-    | coord == offset && (xsize > 0 && ysize > 0 && zsize > 0) = 1
     | coord < offset = 0
+    | coord == offset && (xsize > 1 && ysize > 1 && zsize > 1) = 1
     | otherwise = (ceiling ( (coord + offset) / cube_width )) - 1
     where
       (xsize, ysize, zsize) = dims (function_values g)
@@ -130,9 +130,10 @@ zoom_result :: Grid -> ScaleFactor -> R.DIM3 -> Double
 zoom_result g (sfx, sfy, sfz) (R.Z R.:. i R.:. j R.:. k) =
   f p
   where
-    i' = (fromIntegral i) / (fromIntegral sfx)
-    j' = (fromIntegral j) / (fromIntegral sfy)
-    k' = (fromIntegral k) / (fromIntegral sfz)
+    offset = (h g)/2
+    i' = (fromIntegral i) / (fromIntegral sfx) - offset
+    j' = (fromIntegral j) / (fromIntegral sfy) - offset
+    k' = (fromIntegral k) / (fromIntegral sfz) - offset
     p  = (i', j', k') :: Point
     c = find_containing_cube g p
     t = find_containing_tetrahedron c p