|
JK2eA
|
00001 #pragma once 00002 00003 #include "CurveGraph.h" 00004 #include "Interpolators.h" 00005 00006 00010 template<class T> 00011 class CCurveGraphLinear : public CCurveGraph<T> { 00012 public: 00016 CCurveGraphLinear() 00017 { 00018 } 00024 virtual T Interpolate(float time) 00025 { 00026 // hledani 00027 int curr = -1, last = -1; 00028 for(size_t i = 0; i < m_nodes.size(); i++) { 00029 if(m_nodes[i].t >= time) { 00030 curr = i; 00031 break; 00032 } 00033 last = i; 00034 } 00035 00036 m_currIndex = curr; 00037 00038 if(curr != -1 && last != -1) { 00039 float local_time = (m_nodes[curr].t - m_nodes[last].t); 00040 local_time = (time - m_nodes[last].t) / local_time; 00041 00042 return LinearInterpolation(local_time, m_nodes[last].value, m_nodes[curr].value); 00043 00044 00045 } else if(curr == -1) { 00046 return m_nodes.back().value; 00047 } else if(last == -1) { 00048 return m_nodes.front().value; 00049 } 00050 return T(0.0f); 00051 } 00052 00053 }; 00054 00055 00056
1.8.0