level 13
⑨chu
楼主
比如对象A目前在x=0处,现要求A在t=10的时候到达x=50处
给出一个函数f(△t),要求输入一个时间间隔△t计算对象由当前位置到达下一个位置的坐标
毫无疑问一种方法就是线性递增到目标值,类似于for(i=0;i<50;i++)这种情况
给出代码:
inline float LinearFunc(
float Start, // 当前坐标
float End, // 目的坐标
float Len, // 当前坐标所处的位置到目标坐标剩余的时间
float Step) // 要计算下一个位置时经过的时间△t
{
float k = (End - Start)/Len; // 计算斜率
float tRet = Start + Step * k; // 计算结果
if(k>0) // 时间过长时的防越界处理
return tRet>End ? End : tRet;
else
return tRet<End ? End : tRet;
}
但是现在我想增加效果,做到先快后慢 或者 先慢后快的效果
输入的参数最好保持不变
要怎么办呢?
2012年08月09日 12点08分
1
给出一个函数f(△t),要求输入一个时间间隔△t计算对象由当前位置到达下一个位置的坐标
毫无疑问一种方法就是线性递增到目标值,类似于for(i=0;i<50;i++)这种情况
给出代码:
inline float LinearFunc(
float Start, // 当前坐标
float End, // 目的坐标
float Len, // 当前坐标所处的位置到目标坐标剩余的时间
float Step) // 要计算下一个位置时经过的时间△t
{
float k = (End - Start)/Len; // 计算斜率
float tRet = Start + Step * k; // 计算结果
if(k>0) // 时间过长时的防越界处理
return tRet>End ? End : tRet;
else
return tRet<End ? End : tRet;
}
但是现在我想增加效果,做到先快后慢 或者 先慢后快的效果
输入的参数最好保持不变
要怎么办呢?
