1 #ifndef _Interpolator_h_
2 #define _Interpolator_h_
8 static float linear(
float y1,
float y2,
float mu){
9 return y1 + (y2 - y1) * mu;
11 static float cosine(
float y1,
float y2,
float mu){
12 float mu2 = (1-cosf(mu*
M_PI))/2;
13 return y1*(1-mu2)+y2*mu2;
19 static float cubic(
float y0,
float y1,
float y2,
float mu){
20 float d1 = 0.5*(y2-y0);
21 float d2 = y2-y1+y0-y1;
23 return y1 + dx*(d1+0.5*d2*dx);
30 static float cubic(
float y0,
float y1,
float y2,
float y3,
float mu) {
32 float a0 = y3 - y2 - y0 + y1;
33 float a1 = y0 - y1 - a0;
36 return a0*mu*mu2+a1*mu2+a2*mu+a3;
38 static float cubicSmooth(
float y0,
float y1,
float y2,
float y3,
float mu) {
42 float a0 = -0.5*y0 + 1.5*y1 - 1.5*y2 + 0.5*y3;
43 float a1 = y0 - 2.5*y1 + 2*y2 - 0.5*y3;
44 float a2 = -0.5*y0 + 0.5*y2;
46 return a0*mu*mu2+a1*mu2+a2*mu+a3;
54 static float hermite(
float y0,
float y1,
float y2,
float y3,
float mu,
float tension=0,
float bias=0){
57 float m0 = (y1-y0)*(1+bias)*(1-tension)/2;
58 m0 += (y2-y1)*(1-bias)*(1-tension)/2;
59 float m1 = (y2-y1)*(1+bias)*(1-tension)/2;
60 m1 += (y3-y2)*(1-bias)*(1-tension)/2;
61 float a0 = 2*mu3 - 3*mu2 + 1;
62 float a1 = mu3 - 2*mu2 + mu;
64 float a3 = -2*mu3 + 3*mu2;
65 return(a0*y1+a1*m0+a2*m1+a3*y2);
@ CUBIC_4P_SMOOTH_INTERPOLATION
static float cubic(float y0, float y1, float y2, float mu)
Three-point cubic interpolation of point between y1 and y2 ref: http://www.ebyte.it/library/codesnipp...
static float hermite(float y0, float y1, float y2, float y3, float mu, float tension=0, float bias=0)
static float linear(float y1, float y2, float mu)
static float cosine(float y1, float y2, float mu)
static float cubic(float y0, float y1, float y2, float y3, float mu)
Four-point cubic interpolation Get the interpolated value of a curve described by y0 to y4,...
static float cubicSmooth(float y0, float y1, float y2, float y3, float mu)