const float PI = 3.1415926535897932384626433832795;
const float PI_2 = 1.57079632679489661923;
const float PI_4 = 0.785398163397448309616;
float PI180 = float(PI / 180.0);
float sind(float a){return sin(a * PI180);}
float cosd(float a){return cos(a * PI180);}
float almostIdentity( float x, float m, float n ){
if( x>m ) return x;
const float a = 2.0f*n - m
const float b = 2.0f*m - 3.0f*n;
const float t = x/m;
return (a*t + b)*t*t + n;
}
float impulse( float k, float x ){
const float h = k*x;
return h*expf(1.0f-h);
}
float cubicPulse( float c, float w, float x ){
x = fabsf(x - c);
if( x>w ) return 0.0f;
x /= w;
return 1.0f - x*x*(3.0f-2.0f*x);
}
float expStep( float x, float k, float n ){
return expf( -k*powf(x,n) );
}
float parabola( float x, float k ){
return powf( 4.0f*x*(1.0f-x), k );
}
float pcurve( float x, float k ){
float k = powf(a+b,a+b) / (pow(a,a)*pow(b,b));
return k * powf( x, a ) * powf( 1.0-x, b );
}