pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/easing/quad.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  // QuadIn accelerating from zero velocity
    11  // https://easings.net/#easeInQuad
    12  func QuadIn(t, b, c, d float64) float64 {
    13  	if t > d {
    14  		return c
    15  	}
    16  
    17  	t /= d
    18  
    19  	return c*t*t + b
    20  }
    21  
    22  // QuadOut decelerating to zero velocity
    23  // https://easings.net/#easeOutQuad
    24  func QuadOut(t, b, c, d float64) float64 {
    25  	if t > d {
    26  		return c
    27  	}
    28  
    29  	t /= d
    30  
    31  	return -c*t*(t-2) + b
    32  }
    33  
    34  // QuadInOut acceleration until halfway, then deceleration
    35  // https://easings.net/#easeInOutQuad
    36  func QuadInOut(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 + b
    45  	}
    46  
    47  	t--
    48  
    49  	return -c/2*(t*(t-2)-1) + b
    50  }