function main() {
trace("Freya Hermite Monotonic curve");
var w = 0.5;
var x = 0.;
for( x10 in 0...10 ){
x = x10/10;
trace( x + ' : ' + cubicMidpointEaseInOut( x, w ) );
}
trace( 1. + ' : ' + cubicMidpointEaseInOut( 1., w ) );
}
inline
function cubicMidpointEaseInOut( x: Float, w: Float ){
final s = 3*( ( w < 0.5 )? w: 1 - w );
return if( x <= 0.5 ){
hermiteEval( 0, 0, w, s, 2*x );
} else {
hermiteEval( w, s, 1, 0, 2*x - 1 );
}
}
inline
function hermiteEval( p0: Float, v0: Float
, p1: Float, v1: Float, x: Float ){
final x2 = x*x;
final x3 = x2*x;
return x3*( 2*p0 + v0 - 2*p1 + v1 )
+ x2*( -3*p0 - 2*v0 + 3*p1 - v1 )
+ x*v0
+ p0;
}