module Main where import Cube import Face import Grid import Misc (flatten) import Point import RealFunction import Tetrahedron import ThreeDimensional trilinear :: [[[Double]]] trilinear = [ [ [ 1, 2, 3 ], [ 1, 3, 5 ], [ 1, 4, 7 ] ], [ [ 1, 2, 3 ], [ 1, 4, 7 ], [ 1, 6, 11 ] ], [ [ 1, 2, 3 ], [ 1, 5, 9 ], [ 1, 8, 15 ]]] zeros :: [[[Double]]] zeros = [ [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ], -- [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ], -- [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ]]] dummy :: [[[Double]]] dummy = [ [ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ] ], -- [ [ 9, 10, 11 ], [ 12, 13, 14 ], [ 15, 16, 17 ] ], -- [ [ 18, 19, 20 ], [ 21, 22, 23 ], [ 24, 25, 26 ]]] find_point_value :: RealFunction Point find_point_value p = poly p where g0 = make_grid 1 trilinear the_cubes = flatten (cubes g0) good_cubes = filter ((flip contains_point) p) the_cubes target_cube = good_cubes !! 0 good_tets = filter ((flip contains_point) p) (tetrahedrons target_cube) target_tetrahedron = good_tets !! 0 poly = polynomial target_tetrahedron main :: IO () main = do putStrLn $ show $ find_point_value (0,0,0) putStrLn $ show $ find_point_value (1,0,0) putStrLn $ show $ find_point_value (2,0,0) putStrLn $ show $ find_point_value (0,1,0) putStrLn $ show $ find_point_value (1,1,0) putStrLn $ show $ find_point_value (2,1,0) putStrLn $ show $ find_point_value (0,2,0) putStrLn $ show $ find_point_value (1,2,0) putStrLn $ show $ find_point_value (2,2,0) putStrLn $ show $ find_point_value (0,0,1) putStrLn $ show $ find_point_value (1,0,1) putStrLn $ show $ find_point_value (2,0,1) putStrLn $ show $ find_point_value (0,1,1) putStrLn $ show $ find_point_value (1,1,1) putStrLn $ show $ find_point_value (2,1,1) putStrLn $ show $ find_point_value (0,2,1) putStrLn $ show $ find_point_value (1,2,1) putStrLn $ show $ find_point_value (2,2,1) putStrLn $ show $ find_point_value (0,0,2) putStrLn $ show $ find_point_value (1,0,2) putStrLn $ show $ find_point_value (2,0,2) putStrLn $ show $ find_point_value (0,1,2) putStrLn $ show $ find_point_value (1,1,2) putStrLn $ show $ find_point_value (2,1,2) putStrLn $ show $ find_point_value (0,2,2) putStrLn $ show $ find_point_value (1,2,2) putStrLn $ show $ find_point_value (2,2,2) -- let g0 = make_grid 1 trilinear -- let the_cubes = flatten (cubes g0) -- putStrLn $ show $ the_cubes -- let p = (2, 0, 0) -- let target_cubes = filter ((flip contains_point) p) the_cubes -- putStrLn $ show $ target_cubes -- let target_cube = (take 1 target_cubes) !! 0 -- putStrLn $ show $ target_cube -- let target_tetrahedra = filter ((flip contains_point) p) (tetrahedrons target_cube) -- let target_tetrahedron = (take 1 target_tetrahedra) !! 0 -- putStrLn $ show $ target_tetrahedron -- let poly = polynomial target_tetrahedron -- putStrLn $ show $ poly -- putStrLn $ show $ poly p