繁体的
間補,也就是我们常说的补间插值,或者线性插值。
//
=====================================
/**
等速運動用的間補

@param start [in] 起點
@param end [in] 終點
@param all [in] 起點到終點經過的時間
@param now [in] 現在時間

@return 以now為基礎的間補值
*/
//
=====================================
float
FlatSpeed(
float
start,
float
end,
long
all,
long
now )
{
return (start + ((end - start) * now / all));
}

//
=============================================
/**
加速運動用的間補

@param start [in] 起點
@param end [in] 終點
@param all [in] 起點到終點經過的時間
@param now [in] 現在時間

@return 以now為基礎的間補值
*/
//
===========================================
float
AddSpeed(
float
start,
float
end,
long
all,
long
now )
{
return ( (start)+((end)-(start)) * ((( (now)+1)*(now))>>1) / ((((all)+1)*(all))>>1) );
}

//
=============================================
/**
減速運動用的間補

@param start [in] 起點
@param end [in] 終點
@param all [in] 起點到終點經過的時間
@param now [in] 現在時間

@return 以now為基礎的間補值
*/
//
============================================
float
SubSpeed(
float
start,
float
end,
long
all,
long
now )
{
return ( (start)+((end)-(start)) * (((((all)< <1)-(now)+1)*(now))>>1) / ((((all)+1)*(all))>>1) );
}

//
==============================================
/**
Bezier用的間補計算

@param p1 [in] 起點
@param p2 [in] 中間點
@param p3 [in] 終點
@param t [in] 現在的時間(01)

@return 在t方面的值
*/
//
============================================
float
Bezier(
float
p1,
float
p2,
float
p3,
float
t )
{
return ( ((1-t)*(1-t)*p1) + (2*(1-t)*t*p2) + (t*t*p3) );
}

//
===========================================
/**
Neville用的間補計算

@param p1 [in] 起點
@param p2 [in] 中間點
@param p3 [in] 終點
@param t [in] 現在的時間(01)

@return 在t方面的值
*/
//
=========================================
float
Neville(
float
p1,
float
p2,
float
p3,
float
t )
{
t *= 2;
p1 = p2 + ( p2 - p1 ) * ( t - 1 );
p2 = p3 + ( p3 - p2 ) * ( t - 2 );
return p2 + ( p2 - p1 ) * ( t - 2 ) * 0.5f;
}






















































































