23 lines
605 B
C++
23 lines
605 B
C++
|
//
|
||
|
// Linear.cpp
|
||
|
//
|
||
|
// This code is derived from Universal Tween Engine
|
||
|
// Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
|
||
|
#include <math.h>
|
||
|
#include <TweenEngine/paths/LinearPath.h>
|
||
|
|
||
|
namespace TweenEngine
|
||
|
{
|
||
|
float LinearPath::compute(float t, float *points, int pointsCnt)
|
||
|
{
|
||
|
int segment = (int) floor((pointsCnt-1) * t);
|
||
|
segment = segment > 0 ? segment : 0;
|
||
|
segment = segment < (pointsCnt-2) ? segment : pointsCnt-2;
|
||
|
|
||
|
t = t * (pointsCnt-1) - segment;
|
||
|
|
||
|
return points[segment] + t * (points[segment+1] - points[segment]);
|
||
|
}
|
||
|
}
|