X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FGrid.hs;h=de5f76ac326ff6d4d169125284a3d8a9b7b381a2;hb=edd0bfa30456c0f609418e730af641835b8650aa;hp=d5553b426fc6c18c38438afec5d3039ee1c2a4cc;hpb=e725cfe579b9d05ac040efc08f1ad47e5060de38;p=spline3.git diff --git a/src/Grid.hs b/src/Grid.hs index d5553b4..de5f76a 100644 --- a/src/Grid.hs +++ b/src/Grid.hs @@ -30,7 +30,7 @@ import Cube (Cube(Cube), tetrahedron) import Examples (trilinear, trilinear9x9x9, zeros, naturals_1d) import FunctionValues (make_values, value_at) -import Point (Point) +import Point (Point(..)) import ScaleFactor (ScaleFactor) import Tetrahedron (Tetrahedron, c, polynomial, v0, v1, v2, v3) import ThreeDimensional (ThreeDimensional(..)) @@ -105,10 +105,9 @@ calculate_containing_cube_coordinate g coord -- Since our grid is rectangular, we can figure this out without having -- to check every cube. find_containing_cube :: Grid -> Point -> Cube -find_containing_cube g p = +find_containing_cube g (Point x y z) = cube_at g i j k where - (x, y, z) = p i = calculate_containing_cube_coordinate g x j = calculate_containing_cube_coordinate g y k = calculate_containing_cube_coordinate g z @@ -128,7 +127,7 @@ zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) = m' = (fromIntegral m) / (fromIntegral sfx) - offset n' = (fromIntegral n) / (fromIntegral sfy) - offset o' = (fromIntegral o) / (fromIntegral sfz) - offset - p = (m', n', o') :: Point + p = Point m' n' o' cube = find_containing_cube g p t = find_containing_tetrahedron cube p f = polynomial t @@ -270,25 +269,25 @@ trilinear_c0_t0_tests = test_trilinear_f0_t0_v0 :: Assertion test_trilinear_f0_t0_v0 = - assertEqual "v0 is correct" (v0 t) (1, 1, 1) + assertEqual "v0 is correct" (v0 t) (Point 1 1 1) test_trilinear_f0_t0_v1 :: Assertion test_trilinear_f0_t0_v1 = - assertEqual "v1 is correct" (v1 t) (0.5, 1, 1) + assertEqual "v1 is correct" (v1 t) (Point 0.5 1 1) test_trilinear_f0_t0_v2 :: Assertion test_trilinear_f0_t0_v2 = - assertEqual "v2 is correct" (v2 t) (0.5, 0.5, 1.5) + assertEqual "v2 is correct" (v2 t) (Point 0.5 0.5 1.5) test_trilinear_f0_t0_v3 :: Assertion test_trilinear_f0_t0_v3 = - assertEqual "v3 is correct" (v3 t) (0.5, 1.5, 1.5) + assertEqual "v3 is correct" (v3 t) (Point 0.5 1.5 1.5) test_trilinear_reproduced :: Assertion test_trilinear_reproduced = assertTrue "trilinears are reproduced correctly" $ - and [p (i', j', k') ~= value_at trilinear i j k + and [p (Point i' j' k') ~= value_at trilinear i j k | i <- [0..2], j <- [0..2], k <- [0..2], @@ -306,7 +305,7 @@ test_trilinear_reproduced = test_zeros_reproduced :: Assertion test_zeros_reproduced = assertTrue "the zero function is reproduced correctly" $ - and [p (i', j', k') ~= value_at zeros i j k + and [p (Point i' j' k') ~= value_at zeros i j k | i <- [0..2], j <- [0..2], k <- [0..2], @@ -325,7 +324,7 @@ test_zeros_reproduced = test_trilinear9x9x9_reproduced :: Assertion test_trilinear9x9x9_reproduced = assertTrue "trilinear 9x9x9 is reproduced correctly" $ - and [p (i', j', k') ~= value_at trilinear9x9x9 i j k + and [p (Point i' j' k') ~= value_at trilinear9x9x9 i j k | i <- [0..8], j <- [0..8], k <- [0..8], @@ -355,7 +354,7 @@ test_tetrahedra_collision_sensitivity = where g = make_grid 1 naturals_1d cube = cube_at g 0 18 0 - p = (0, 17.5, 0.5) :: Point + p = Point 0 17.5 0.5 t20 = tetrahedron cube 20