+module FunctionValues
+where
+
+import Cardinal
+
+data FunctionValues =
+ FunctionValues { front :: Double,
+ back :: Double,
+ left :: Double,
+ right :: Double,
+ top :: Double,
+ down :: Double,
+ front_left :: Double,
+ front_right :: Double,
+ front_top :: Double,
+ front_down :: Double,
+ back_left :: Double,
+ back_right :: Double,
+ back_top :: Double,
+ back_down :: Double,
+ left_top :: Double,
+ left_down :: Double,
+ right_top :: Double,
+ right_down :: Double,
+ front_left_top :: Double,
+ front_left_down :: Double,
+ front_right_top :: Double,
+ front_right_down :: Double,
+ back_left_top :: Double,
+ back_left_down :: Double,
+ back_right_top :: Double,
+ back_right_down :: Double,
+ interior :: Double }
+ deriving (Eq, Show)
+
+empty_values :: FunctionValues
+empty_values =
+ FunctionValues 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
+
+eval :: FunctionValues -> Cardinal -> Double
+eval f F = front f
+eval f B = back f
+eval f L = left f
+eval f R = right f
+eval f T = top f
+eval f D = down f
+eval f (Sum x y) = (eval f x) + (eval f y)
+eval f (Difference x y) = (eval f x) - (eval f y)
+eval f (Product x y) = (eval f x) * (eval f y)
+eval f (ScalarProduct x y) = x * (eval f y)