hbutils.algorithm.linear

linear_map

hbutils.algorithm.linear.linear_map(points: Union[Sequence[float], Sequence[Tuple[float, float]]]) → Callable[[float], float][source]
Overview:

Multiple-staged linear gradient calculation based on float number.

Parameters:

points – Points for this linear mapping. If the sequence consists of float numbers, it will be seen as the simple linear mapping. If the elements are binary tuples (contains 2 float numbers), it means the x-range is assigned.

Returns:

A callable function for linear mapping.

Examples::
  • Simple Linear Mapping

>>> from hbutils.algorithm import linear_map
>>>
>>> f = linear_map((0, 1, 0.5))
>>> f(0)
0.0
>>> f(0.25)
0.5
>>> f(1 / 3)
0.6666666666666666
>>> f(0.5)
1.0
>>> f(2 / 3)
0.8333333333333334
>>> f(0.75)
0.75
>>> f(1)
0.5
  • Complex Linear Mapping (x values are customized)

>>> f = linear_map(((-0.2, 0), (0.7, 1), (1.1, 0.5)))
>>> f(-0.2)
0.0
>>> f(0)
0.22222222222222227
>>> f(0.25)
0.5000000000000001
>>> f(1 / 3)
0.5925925925925927
>>> f(0.5)
0.7777777777777778
>>> f(2 / 3)
0.9629629629629631
>>> f(0.7)
1.0
>>> f(0.75)
0.9375
>>> f(0.8)
0.875
>>> f(1)
0.625
>>> f(1.1)
0.5