21 lines
533 B
Haskell
21 lines
533 B
Haskell
module Dodge.FloatFunction where
|
|
|
|
import Dodge.Data.FloatFunction
|
|
|
|
doFloatFloat :: FloatFloat -> Float -> Float
|
|
doFloatFloat ff x = case ff of
|
|
FloatID -> x
|
|
FloatConst y -> y
|
|
FloatFOV a
|
|
| abs x < 0.5 * a -> 1
|
|
| otherwise -> 0
|
|
FloatLessCheck y
|
|
| x > y -> 0
|
|
| otherwise -> 1
|
|
FloatDistLinearNearFar maxd a b
|
|
| x > maxd -> 0
|
|
| otherwise -> (a * (maxd - x) + b * (x - maxd)) / maxd
|
|
FloatAbsCheckGreaterLess a y1 y2
|
|
| abs x > a -> y1
|
|
| otherwise -> y2
|