web/rsln/res/metadataplayer/test/interface 1.2/source/easing.js
author Samuel Huron <samuel.huron@centrepompidou.fr>
Fri, 18 Feb 2011 19:37:15 +0100
changeset 50 a1636b31eb98
permissions -rw-r--r--
polemical timeline
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     1
/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     2
 * Interface Elements for jQuery
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     3
 * Easing formulas
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     4
 *
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     5
 * http://interface.eyecon.ro
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     6
 *
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     7
 * Copyright (c) 2006 Stefan Petre
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     8
 * Dual licensed under the MIT (MIT-LICENSE.txt)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     9
 * and GPL (GPL-LICENSE.txt) licenses.
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    10
 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    11
 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    12
/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    13
 * Starting with jQuery 1.1  the fx function accepts easing formulas that can be used with .animation() and most of FX plugins from Interface. The object can be extended to accept new easing formulas
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    14
 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    15
 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    16
 jQuery.extend({	
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    17
	/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    18
	 *
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    19
	 * @param Integer p period step in animation
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    20
	 * @param Integer n current time
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    21
	 * @param Mixed firstNum begin value
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    22
	 * @param Mixed delta change in
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    23
	 * @param Integer duration duration
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    24
	 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    25
	easing :  {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    26
		linear: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    27
			return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    28
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    29
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    30
		easein: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    31
			return delta*(n/=duration)*n*n + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    32
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    33
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    34
		easeout: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    35
			return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    36
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    37
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    38
		easeboth: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    39
			if ((n/=duration/2) < 1)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    40
				return delta/2*n*n*n*n + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    41
				return -delta/2 * ((n-=2)*n*n*n - 2) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    42
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    43
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    44
		bounceout: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    45
			if ((n/=duration) < (1/2.75)) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    46
				return delta*(7.5625*n*n) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    47
			} else if (n < (2/2.75)) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    48
				return delta*(7.5625*(n-=(1.5/2.75))*n + .75) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    49
			} else if (n < (2.5/2.75)) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    50
				return delta*(7.5625*(n-=(2.25/2.75))*n + .9375) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    51
			} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    52
				return delta*(7.5625*(n-=(2.625/2.75))*n + .984375) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    53
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    54
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    55
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    56
		bouncein: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    57
			if (jQuery.easing.bounceout)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    58
				return delta - jQuery.easing.bounceout (p, duration - n, 0, delta, duration) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    59
			return firstNum + delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    60
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    61
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    62
		bounceboth: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    63
			if (jQuery.easing.bouncein && jQuery.easing.bounceout)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    64
				if (n < duration/2)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    65
					return jQuery.easing.bouncein(p, n*2, 0, delta, duration) * .5 + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    66
				return jQuery.easing.bounceout(p, n*2-duration, 0, delta, duration) * .5 + delta*.5 + firstNum; 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    67
			return firstNum + delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    68
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    69
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    70
		elasticin: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    71
			var a, s;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    72
   			if (n == 0)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    73
   				return firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    74
   			if ((n/=duration)==1)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    75
   				return firstNum+delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    76
   			a = delta * 0.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    77
   			p=duration*.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    78
			if (a < Math.abs(delta)) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    79
				a=delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    80
				s=p/4;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    81
			} else { 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    82
				s = p/(2*Math.PI) * Math.asin (delta/a);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    83
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    84
			return -(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum; 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    85
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    86
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    87
		elasticout:function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    88
			var a, s;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    89
			if (n==0)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    90
				return firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    91
			if ((n/=duration/2)==2)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    92
				return firstNum + delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    93
   			a = delta * 0.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    94
   			p=duration*.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    95
			if (a < Math.abs(delta)){
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    96
				a = delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    97
				s=p/4;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    98
			} else { 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    99
				s = p/(2*Math.PI) * Math.asin (delta/a);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   100
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   101
			return a*Math.pow(2,-10*n) * Math.sin( (n*duration-s)*(2*Math.PI)/p ) + delta + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   102
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   103
		
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   104
		elasticboth: function(p, n, firstNum, delta, duration) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   105
			var a, s;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   106
			if (n==0)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   107
				return firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   108
			if ((n/=duration/2)==2)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   109
				return firstNum + delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   110
   			a = delta * 0.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   111
   			p=duration*.3;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   112
			if (a < Math.abs(delta)){
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   113
				a = delta;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   114
				s=p/4;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   115
			} else { 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   116
				s = p/(2*Math.PI) * Math.asin (delta/a);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   117
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   118
			if (n < 1) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   119
				return -.5*(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   120
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   121
			return a*Math.pow(2,-10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )*.5 + delta + firstNum; 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   122
		}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   123
	}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   124
});