Source: css3d.math.js

/**
 * CSS 3D engine
 *
 * @category    css3d
 * @package     css3d.math
 * @author      Jan Fischer, bitWorking <info@bitworking.de>
 * @copyright   2014 Jan Fischer
 * @license     http://www.opensource.org/licenses/mit-license.html  MIT License
 */

/**
 * 
 * @namespace
 */
css3d.math = {};

/**
 * 
 * @param {Number} value1
 * @param {Number} value2
 * @param {Number} amount 0-1
 * @returns {Number}
 */
css3d.math.lerp = function(value1, value2, amount)
{
    return value1 + (value2 - value1) * amount;
};

/**
 * 
 * @param {Number} min
 * @param {Number} max
 * @returns {Number}
 */
css3d.math.randomNumber = function(min, max)
{
    return Math.random() * (max - min) + min;
};

/**
 * 
 * @param {Number} min
 * @param {Number} max
 * @returns {Integer}
 */
css3d.math.randomInteger = function(min, max)
{
    return Math.floor(Math.random() * (max - min + 1)) + min;
};

/* http://forum.thegamecreators.com/?m=forum_view&t=193433&b=41&msg=2307919#m2307919 */
/* http://sol.gfxile.net/interpolation/ */

/**
 * 
 * @namespace
 */
css3d.math.interpolation = {};

/**
 * 
 * @param {Number} t 0-1
 * @returns {Number}
 */
css3d.math.interpolation.hermite = function(t)
{
    return css3d.math.lerp(0, 1, t * t * (3.0 - 2.0 * t))
};

/**
 * 
 * @param {Number} t 0-1
 * @returns {Number}
 */
css3d.math.interpolation.sinerp = function(t)
{
    return css3d.math.lerp(0, 1, Math.sin(t * Math.PI * 0.5))
};

/**
 * 
 * @param {Number} t 0-1
 * @returns {Number}
 */
css3d.math.interpolation.bounce = function(t)
{
    return 1 - Math.abs(Math.sin(5.5*(t+1)*(t+1)) * (1-t));
};

/**
 * 
 * @param {Number} t 0-1
 * @returns {Number}
 */
css3d.math.interpolation.berp = function(t)
{
    return (Math.sin(t * Math.PI * (0.2 + 2.5 * t * t * t)) * Math.pow(1.01 - t, 2.2) + t) * (1.0 + (1.2 * (1.0 - t)));
};

/**
 * 
 * @param {Number} t 0-1
 * @returns {Number}
 */
css3d.math.interpolation.smoothStep = function(t)
{
    var v = t/1;
    return -2*v * v *v + 3*v * v;
};