/**
* 返回0-1平滑阶梯函数的值
* @param a 变量a
* @param b 变量b
* @param c 变量c
*/
public static smoothstep( a: number, b: number, c: number ): number
{
let x = this.clamp( ( c - a ) / ( b - a ), 0, 1 );
return x * x * ( 3 - 2 * x );
}
/**
* 将X限制在min和max之间
* @param x x值
* @param min 最小值
* @param max 最大值
*/
public static clamp( x: number, min: number, max: number ): number
{
return Math.min( Math.max( x, min ), max );
}
/**
* 返回线性插值
* @param from 起始值
* @param to 目标值
* @param t 时间差
*/
public static lerp( from: number, to: number, t: number ): number
{
if ( t > 1 )
{
t = 1;
}
else if ( t < 0 )
{
t = 0;
}
return from + ( to - from ) * t;
}