Skip to content

Instantly share code, notes, and snippets.

@icai
Last active June 14, 2019 00:32
Show Gist options
  • Save icai/cb836cd5fd27727a6f1e5904acb679ee to your computer and use it in GitHub Desktop.
Save icai/cb836cd5fd27727a6f1e5904acb679ee to your computer and use it in GitHub Desktop.
easing easeOutIn effect
/******************************************************************************/
/*********************************** EASING ***********************************/
/******************************************************************************/
(function() {
// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
var baseEasings = {};
$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
baseEasings[ name ] = function( p ) {
return Math.pow( p, i + 2 );
};
});
$.extend( baseEasings, {
Sine: function( p ) {
return 1 - Math.cos( p * Math.PI / 2 );
},
Circ: function( p ) {
return 1 - Math.sqrt( 1 - p * p );
},
Elastic: function( p ) {
return p === 0 || p === 1 ? p :
-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
},
Back: function( p ) {
return p * p * ( 3 * p - 2 );
},
Bounce: function( p ) {
var pow2,
bounce = 4;
while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
}
});
$.each( baseEasings, function( name, easeIn ) {
$.easing[ "easeIn" + name ] = easeIn;
$.easing[ "easeOut" + name ] = function( p ) {
return 1 - easeIn( 1 - p );
};
$.easing[ "easeInOut" + name ] = function( p ) {
return p < 0.5 ?
easeIn( p * 2 ) / 2 :
1 - easeIn( 2 - 2 *p) / 2;
};
$.easing[ "easeOutIn" + name ] = function( p ) {
return p < 0.5 ?
0.5 * (1 - easeIn( 1 - 2 *p )):
0.5 * easeIn(p * 2 - 1) + 0.5;
};
});
})();
@icai
Copy link
Author

icai commented Oct 11, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment