File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,9 @@ def construct(self):
8989__all__  =  [
9090    "linear" ,
9191    "smooth" ,
92+     "smoothstep" ,
93+     "smootherstep" ,
94+     "smoothererstep" ,
9295    "rush_into" ,
9396    "rush_from" ,
9497    "slow_into" ,
@@ -155,6 +158,36 @@ def smooth(t: float, inflection: float = 10.0) -> float:
155158    )
156159
157160
161+ def  smoothstep (t : float ) ->  float :
162+     """Implementation of the 1st order SmoothStep sigmoid function. 
163+     The 1st derivative (speed) is zero at the endpoints. 
164+     https://en.wikipedia.org/wiki/Smoothstep 
165+     """ 
166+     return  0  if  t  <=  0  else  3  *  t ** 2  -  2  *  t ** 3  if  t  <  1  else  1 
167+ 
168+ 
169+ def  smootherstep (t : float ) ->  float :
170+     """Implementation of the 2nd order SmoothStep sigmoid function. 
171+     The 1st and 2nd derivatives (speed and acceleration) are zero at the endpoints. 
172+     https://en.wikipedia.org/wiki/Smoothstep 
173+     """ 
174+     return  0  if  t  <=  0  else  6  *  t ** 5  -  15  *  t ** 4  +  10  *  t ** 3  if  t  <  1  else  1 
175+ 
176+ 
177+ def  smoothererstep (t : float ) ->  float :
178+     """Implementation of the 3rd order SmoothStep sigmoid function. 
179+     The 1st, 2nd and 3rd derivatives (speed, acceleration and jerk) are zero at the endpoints. 
180+     https://en.wikipedia.org/wiki/Smoothstep 
181+     """ 
182+     return  (
183+         0 
184+         if  t  <=  0 
185+         else  35  *  t ** 4  -  84  *  t ** 5  +  70  *  t ** 6  -  20  *  t ** 7 
186+         if  t  <  1 
187+         else  1 
188+     )
189+ 
190+ 
158191@unit_interval  
159192def  rush_into (t : float , inflection : float  =  10.0 ) ->  float :
160193    return  2  *  smooth (t  /  2.0 , inflection )
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments