JK2eA
 All Classes Functions Variables
CurveGraphPolynom.h
00001 #pragma once
00002 
00003 #include "CurveGraph.h"
00004 #include "Interpolators.h"
00005 
00006 
00010 template<class T>
00011 class CCurveGraphPolynom : public CCurveGraph<T> {
00012 public:
00016         CCurveGraphPolynom()
00017         {       
00018         }
00024         virtual T Interpolate(float time)
00025         {
00026                 // LAGRANGE
00027 
00028                 
00029                 T dd1(1.0f);
00030                 T dd2(1.0f);
00031                 T sum(0.0f);
00032 
00033                 if(time > m_nodes.back().t) {
00034                         m_currIndex = -1;
00035                         return sum;
00036                 }
00037 
00038                 m_currIndex = 0;
00039                 for(int i = 0; i < (int)m_nodes.size(); i++) {
00040                         dd1 = 1.0f; dd2 = 1.0f;
00041                         for(int j = 0; j < (int)m_nodes.size(); j++) {
00042                                 if(j == i) continue;
00043 
00044                                 dd1 *= time - m_nodes[j].t;
00045                                 dd2 *= m_nodes[i].t - m_nodes[j].t;
00046                         }
00047                         sum += m_nodes[i].value * (dd1 / dd2); 
00048                 }
00049                 
00050                 return sum;
00051         }
00052 
00053 };