210 {
211 float p = 1 - magnitude;
212 float scaledTime = t * 2;
213
214 if( t == 0 || t == 1 ) {
215 return t;
216 }
217
218 float s = p / ( 2 * Math.PI ) * Math.Asin( 1 );
219 return (Math.Pow( 2, -10 * scaledTime ) * Math.Sin( ( scaledTime - s ) * ( 2 * Math.PI ) / p )) + 1;
220 }