Convenience functions for working with Float values. Examples assume that
this module has been imported using:
import Float.Extra as FloatInterpolate from the first value to the second, based on a parameter that ranges from zero to one. Passing a parameter value of zero will return the start value and passing a parameter value of one will return the end value.
Float.interpolateFrom 5 10 0
--> 5
Float.interpolateFrom 5 10 1
--> 10
Float.interpolateFrom 5 10 0.6
--> 8The end value can be less than the start value:
Float.interpolateFrom 10 5 0.1
--> 9.5Parameter values less than zero or greater than one can be used to extrapolate:
Float.interpolateFrom 5 10 1.5
--> 12.5
Float.interpolateFrom 5 10 -0.5
--> 2.5
Float.interpolateFrom 10 5 -0.2
--> 11Construct a range of evenly-spaced values given a start value, an end
value and the number of steps to take from the start to the end. The first
value in the returned list will be equal to start and the last value will be
equal to end. Note that the number of returned values will be one greater than
the number of steps!
Float.range { start = 0, end = 1, steps = 1 }
--> [ 0, 1 ]
Float.range { start = 0, end = 1, steps = 2 }
--> [ 0, 0.5, 1 ]
Float.range { start = 10, end = 20, steps = 2 }
--> [ 10, 15, 20 ]
Float.range { start = 2, end = 3, steps = 5 }
--> [ 2, 2.2, 2.4, 2.6, 2.8, 3 ]The start and end values can be in either order:
Float.range { start = 1, end = 3, steps = 4 }
--> [ 1, 1.5, 2, 2.5, 3 ]
Float.range { start = 3, end = 1, steps = 4 }
--> [ 3, 2.5, 2, 1.5, 1 ]Passing a negative or zero steps value will result in an empty list being
returned.
If you need finer control over what values get generated, try combining
interpolateFrom with the various functions in the
elm-1d-parameter
package. For example:
-- Same as using Float.range
Parameter1d.steps 5 (Float.interpolateFrom 2 3)
--> [ 2, 2.2, 2.4, 2.6, 2.8, 3 ]
-- Omit the last value
Parameter1d.leading 5 (Float.interpolateFrom 2 3)
--> [ 2, 2.2, 2.4, 2.6, 2.8 ]
-- Omit the first value
Parameter1d.trailing 5 (Float.interpolateFrom 2 3)
--> [ 2.2, 2.4, 2.6, 2.8, 3 ]
Check if two values are equal within a given tolerance.