def t_range(steps, t_start=0.0, t_end=1.0, closed=True, closed_start=True):
    """
        Floating point range().  (Think time range or theta range).

        :param steps:   Number of steps in the open range.  t_range(2) -> [0, 0.5, 1.0]
        :param t_start: Starting point of range
        :param t_end:   End of range.  Can be less than t_low.  t_range(2, 0, -1) -> [0, -0.5, -1.0]
        :param closed:  True to include end point.  t_range(2, closed=False) -> [0, 0.5]
        :param closed_start: True to include start point t_range(2, closed_start=False) -> [0.5, 1.0]
        :return: generator
    """
    t_len = t_end - t_start
    start = 0 if closed_start else 1
    end = steps+1 if closed else steps
    return (step / steps * t_len + t_start for step in range(start, end))