import Cardinal
-- | The FunctionValues type represents the value of our function f at
--- the 27 points surrounding the center of a cube. Each value of f
--- can be accessed by the name of its direction.
+-- the 27 points surrounding (and including) the center of a
+-- cube. Each value of f can be accessed by the name of its
+-- direction.
data FunctionValues =
FunctionValues { front :: Double,
back :: Double,
down :: Double,
front_left :: Double,
front_right :: Double,
- front_top :: Double,
front_down :: Double,
+ front_top :: Double,
back_left :: Double,
back_right :: Double,
- back_top :: Double,
back_down :: Double,
- left_top :: Double,
+ back_top :: Double,
left_down :: Double,
- right_top :: Double,
+ left_top :: Double,
right_down :: Double,
- front_left_top :: Double,
+ right_top :: Double,
front_left_down :: Double,
- front_right_top :: Double,
+ front_left_top :: Double,
front_right_down :: Double,
- back_left_top :: Double,
+ front_right_top :: Double,
back_left_down :: Double,
- back_right_top :: Double,
+ back_left_top :: Double,
back_right_down :: Double,
+ back_right_top :: Double,
interior :: Double }
deriving (Eq, Show)
-- FunctionValues type. Given a 'Cardinal' direction and a
-- 'FunctionValues' object, eval will return the value of the
-- function f in that 'Cardinal' direction. Note that 'Cardinal' can
--- be a composite type; eval is what performs the "arithmetic" on
+-- be a composite type; eval is what performs the \"arithmetic\" on
-- 'Cardinal' directions.
eval :: FunctionValues -> Cardinal -> Double
eval f F = front f
back_top = value_at values (i+1) j (k+1),
left_down = value_at values i (j-1) (k-1),
left_top = value_at values i (j-1) (k+1),
- right_top = value_at values i (j+1) (k+1),
right_down = value_at values i (j+1) (k-1),
+ right_top = value_at values i (j+1) (k+1),
front_left_down = value_at values (i-1) (j-1) (k-1),
front_left_top = value_at values (i-1) (j-1) (k+1),
front_right_down = value_at values (i-1) (j+1) (k-1),
front_right_top = value_at values (i-1) (j+1) (k+1),
- back_left_down = value_at values (i-1) (j-1) (k-1),
+ back_left_down = value_at values (i+1) (j-1) (k-1),
back_left_top = value_at values (i+1) (j-1) (k+1),
back_right_down = value_at values (i+1) (j+1) (k-1),
back_right_top = value_at values (i+1) (j+1) (k+1),