def __init__(self, equation="t", tween=None, noise_fn=None):
        """
        
        :param equation: parametric equation written as a string, expressed in terms of parameter "t". 
        :param tween: optional tweening specification
        :param noise_fn: 2d function accepting a value ( equation(0) <= value <= equation(1)) and a time (0 <= t <= 1).
         By accepting and using t, the noise is animated in time. By accepting but ignoring t, the noise is only spatial.
        """
        if tween is None:
            tween = ['linear']
        if not equation:
            equation = "t"
        self.tween = tween
        self.T = Tween(*tween)
        self.noise_fn = noise_fn
        self.equation = parse_expr(equation)
        t = Symbol('t')
        frm = self.equation.evalf(subs={t: 0})
        to = self.equation.evalf(subs={t: 1})
        super().__init__(frm, to)
def __init__ ( self , equation = "t" , tween = None , noise_fn = None ) : if tween is None : tween = [ 'linear' ] if not equation : equation = "t" self . tween = tween self . T = Tween ( * tween ) self . noise_fn = noise_fn self . equation = parse_expr ( equation ) t = Symbol ( 't' ) frm = self . equation . evalf ( subs = { t : 0 } ) to = self . equation . evalf ( subs = { t : 1 } ) super ( ) . __init__ ( frm , to )
:param equation: parametric equation written as a string, expressed in terms of parameter "t". 
        :param tween: optional tweening specification
        :param noise_fn: 2d function accepting a value ( equation(0) <= value <= equation(1)) and a time (0 <= t <= 1).
         By accepting and using t, the noise is animated in time. By accepting but ignoring t, the noise is only spatial.