pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/easing/quint.go (about)

     1  package easing
     2  
     3  // ////////////////////////////////////////////////////////////////////////////////// //
     4  //                                                                                    //
     5  //                         Copyright (c) 2022 ESSENTIAL KAOS                          //
     6  //      Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>     //
     7  //                                                                                    //
     8  // ////////////////////////////////////////////////////////////////////////////////// //
     9  
    10  // QuintIn accelerating from zero velocity
    11  // https://easings.net/#easeInQuint
    12  func QuintIn(t, b, c, d float64) float64 {
    13  	if t > d {
    14  		return c
    15  	}
    16  
    17  	t /= d
    18  	return c*t*t*t*t*t + b
    19  }
    20  
    21  // QuintOut decelerating to zero velocity
    22  // https://easings.net/#easeOutQuint
    23  func QuintOut(t, b, c, d float64) float64 {
    24  	if t > d {
    25  		return c
    26  	}
    27  
    28  	t /= d
    29  	t--
    30  
    31  	return c*(t*t*t*t*t+1) + b
    32  }
    33  
    34  // QuintInOut acceleration until halfway, then deceleration
    35  // https://easings.net/#easeInOutQuint
    36  func QuintInOut(t, b, c, d float64) float64 {
    37  	if t > d {
    38  		return c
    39  	}
    40  
    41  	t /= d / 2
    42  
    43  	if t < 1 {
    44  		return c/2*t*t*t*t*t + b
    45  	}
    46  
    47  	t -= 2
    48  
    49  	return c/2*(t*t*t*t*t+2) + b
    50  }