#include <OMKColorPolator.h>
Inheritance diagram for OMK::Type::ColorPolator:
Public Member Functions | |
ColorPolator () | |
Constructor. | |
virtual | ~ColorPolator () |
Destructor. | |
virtual const SimpleTypeT< Color > & | interpolate (SimpleTypeT< Color > &result, const int interpolationLevel, const Date &dateNeeded, const Date &dateAfter, const SimpleTypeT< Color > &valueAfter, const Date &dateBefore, int offsetToMostRecentOfDateBefore) const |
Interpolate. | |
virtual const SimpleTypeT< Color > & | extrapolate (SimpleTypeT< Color > &result, const int requestedPolationLevel, const Date &t, const Date &tIndice) const |
Extrapolation. | |
virtual const SimpleTypeT< Color > & | antepolate (SimpleTypeT< Color > &result, const int requestedPolationLevel, const Date &t, const Date &tIndice, unsigned int indice) const |
Antepolation. |
Definition at line 32 of file OMKColorPolator.h.
OMK::Type::ColorPolator::ColorPolator | ( | ) | [inline] |
virtual OMK::Type::ColorPolator::~ColorPolator | ( | ) | [inline, virtual] |
const SimpleTypeT< Color > & ColorPolator::interpolate | ( | SimpleTypeT< Color > & | result, | |
const int | interpolationLevel, | |||
const Date & | dateNeeded, | |||
const Date & | dateAfter, | |||
const SimpleTypeT< Color > & | valueAfter, | |||
const Date & | dateBefore, | |||
int | offsetToMostRecentOfDateBefore | |||
) | const [virtual] |
Interpolate.
Added by Guilermo Andrade
Added by Guilermo Andrade
Added by Guilermo Andrade
Added by Guilermo Andrade
Definition at line 33 of file OMKColorPolator.cpp.
References OMK::Type::PolatorNT::Constant, OMK::Type::PolatorNT::ConstantContinuous, OMK::Type::PolatorNT::Cubic, OMK::Type::PolatorNT::CubicContinuous, OMK::Type::Polator< T >::get(), OMK::Type::Polator< T >::getDate(), OMK::Type::PolatorNT::Linear, OMK::Type::PolatorNT::LinearContinuous, OMK_DEBUG_OMK_TYPE, OMTRACEID, OMK::Type::PolatorNT::Quadratic, and OMK::Type::PolatorNT::QuadraticContinuous.
00040 { 00041 switch ( interpolationLevel ) 00042 { 00043 case Constant : 00044 case ConstantContinuous : 00045 result = get( 0 ) ; 00046 break ; 00047 case Linear : 00048 case LinearContinuous : 00049 { 00050 for( int i = 0 ; i < 4 ; i++ ) 00051 { 00052 ((Color&)result)[i] = NumericPolatorT< float >::linearInterpolate( dateNeeded, 00053 dateAfter, 00054 ( (Color&)valueAfter )[i], 00055 dateBefore, 00056 ( (Color&)get( offsetToMostRecentOfDateBefore ) )[i] ) ; 00057 } 00058 } 00059 break ; 00060 case Quadratic : 00061 case QuadraticContinuous : 00062 { 00063 for( int i = 0; i < 4; i++ ) 00064 { 00065 ((Color&)result)[i] = NumericPolatorT< float >::quadraticInterpolate( dateNeeded, 00066 dateAfter, 00067 ( (Color&)valueAfter )[i], 00068 dateBefore, 00069 ( (Color&)get( offsetToMostRecentOfDateBefore ) )[i] , 00070 getDate( offsetToMostRecentOfDateBefore + 1 ), 00071 ( (Color&)get( offsetToMostRecentOfDateBefore + 1 ) )[i] ) ; 00072 } 00073 } 00074 break ; 00075 case Cubic : 00076 case CubicContinuous : 00077 { 00078 for( int i = 0 ; i < 4 ; i++ ) 00079 { 00080 ((Color&)result)[i] = NumericPolatorT< float >::cubicInterpolate(dateNeeded, 00081 dateAfter, 00082 ( (Color&)valueAfter )[i], 00083 dateBefore, 00084 ( (Color&)get( offsetToMostRecentOfDateBefore ) )[i], 00085 getDate( offsetToMostRecentOfDateBefore + 1 ), 00086 ( (Color&)get( offsetToMostRecentOfDateBefore + 1 ) )[i], 00087 getDate( offsetToMostRecentOfDateBefore + 2 ), 00088 ( (Color&)get( offsetToMostRecentOfDateBefore + 2 ) )[i] ) ; 00089 } 00090 } 00091 break; 00092 default : 00093 OMTRACEID( OMK_DEBUG_OMK_TYPE, "ColorPolator<N>::interpolate: unknown polation level" ) ; 00094 } 00095 return result ; 00096 }
const SimpleTypeT< Color > & ColorPolator::extrapolate | ( | SimpleTypeT< Color > & | result, | |
const int | requestedPolationLevel, | |||
const Date & | t, | |||
const Date & | tIndice | |||
) | const [virtual] |
Extrapolation.
Definition at line 100 of file OMKColorPolator.cpp.
References OMK::Type::PolatorNT::Constant, OMK::Type::PolatorNT::ConstantContinuous, OMK::Type::PolatorNT::Cubic, OMK::Type::PolatorNT::CubicContinuous, OMK::Type::Polator< T >::get(), OMK::Type::Polator< T >::getDate(), OMK::Type::Polator< T >::getNumberOfPresentValues(), OMK::Type::PolatorNT::Linear, OMK::Type::PolatorNT::LinearContinuous, OMK_DEBUG_OMK_TYPE, OMTRACEID, OMK::Type::PolatorNT::Quadratic, and OMK::Type::PolatorNT::QuadraticContinuous.
00104 { 00105 switch ( requestedPolationLevel ) 00106 { 00107 case Constant : 00108 result = get ( 0 ) ; 00109 break ; 00110 // Added by Guillermo Andrade 00111 case ConstantContinuous : 00112 result = get ( 0 ) ; 00113 00114 if( 1 < getNumberOfPresentValues() ) 00115 { 00116 for( int i = 0 ; i < 4 ; i++ ) 00117 { 00118 ((Color&)result)[i]= ::NumericPolatorT< float >::linearInterpolate( t, 00119 tIndice, ( (Color&)get( 1 ) )[i], 00120 2*tIndice - getDate( 1 ), ( (Color&)get( 0 ) )[i] ) ; 00121 } 00122 } 00123 break ; 00124 // 00125 case Linear : 00126 { 00127 for( int i = 0 ; i < 4 ; i++ ) 00128 { 00129 ((Color&)result)[i] = NumericPolatorT< float >::linearExtrapolate( t, 00130 tIndice, ( (Color&)get( 0 ) )[i], 00131 getDate( 1 ), ( (Color&)get( 1 ) )[i] ) ; 00132 } 00133 } 00134 break ; 00135 // Added by Guillermo Andrade 00136 case LinearContinuous : 00137 { 00138 for( int i = 0 ; i < 4 ; i++ ) 00139 { 00140 ((Color&)result)[i] = NumericPolatorT< float >::linearExtrapolate( t, 00141 tIndice, ( (Color&)get( 0 ) )[i], 00142 getDate( 1 ), ( (Color&)get( 1 ) )[i] ) ; 00143 } 00144 if( 2 < getNumberOfPresentValues() ) 00145 { 00146 for( int i = 0 ; i < 4 ; i++ ) 00147 { 00148 float oldResult = NumericPolatorT< float >::linearExtrapolate( t, 00149 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00150 getDate( 2 ), ( (Color&)get( 2 ) )[i]) ; 00151 ((Color&)result)[i] = ::NumericPolatorT< float >::linearInterpolate( t, 00152 tIndice, oldResult, 00153 2*tIndice - getDate( 1 ), ((Color&)result)[i] ) ; 00154 } 00155 } 00156 } 00157 break ; 00158 // 00159 case Quadratic : 00160 { 00161 for( int i = 0 ; i < 4 ; i++ ) 00162 { 00163 ((Color&)result)[i] = NumericPolatorT< float >::quadraticExtrapolate( t, 00164 tIndice, ( (Color&)get( 0 ) )[i], 00165 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00166 getDate( 2 ), ( (Color&)get( 2 ) )[i] ) ; 00167 } 00168 } 00169 break ; 00170 // Added by Guillermo Andrade 00171 case QuadraticContinuous : 00172 { 00173 for( int i = 0 ; i < 4 ; i++ ) 00174 { 00175 ((Color&)result)[i] = NumericPolatorT< float >::quadraticExtrapolate( t, 00176 tIndice, ( (Color&)get( 0 ) )[i], 00177 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00178 getDate( 2 ), ( (Color&)get( 2 ) )[i] ) ; 00179 } 00180 if( 3 < getNumberOfPresentValues() ) 00181 { 00182 for( int i = 0 ; i < 4 ; i++ ) 00183 { 00184 float oldResult = NumericPolatorT< float >::quadraticExtrapolate( t, 00185 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00186 getDate( 2 ), ( (Color&)get( 2 ) )[i], 00187 getDate( 3 ), ( (Color&)get( 3 ) )[i] ) ; 00188 ((Color&)result)[i] = ::NumericPolatorT< float >::linearInterpolate( t, 00189 tIndice, oldResult, 00190 2*tIndice - getDate( 1 ), ((Color&)result)[i] ) ; 00191 } 00192 } 00193 } 00194 break ; 00195 // 00196 case Cubic : 00197 { 00198 for( int i = 0 ; i < 4 ; i++ ) 00199 { 00200 ((Color&)result)[i] = NumericPolatorT< float >::cubicExtrapolate( t, 00201 tIndice, ( (Color&)get( 0 ) )[i], 00202 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00203 getDate( 2 ), ( (Color&)get( 2 ) )[i], 00204 getDate( 3 ), ( (Color&)get( 3 ) )[i] ) ; 00205 } 00206 } 00207 break ; 00208 // Added by Guillermo Andrade 00209 case CubicContinuous : 00210 { 00211 for( int i = 0 ; i < 4 ; i++ ) 00212 { 00213 ((Color&)result)[i] = NumericPolatorT< float >::cubicExtrapolate( t, 00214 tIndice, ( (Color&)get( 0 ) )[i], 00215 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00216 getDate( 2 ), ( (Color&)get( 2 ) )[i], 00217 getDate( 3 ), ( (Color&)get( 3 ) )[i] ) ; 00218 } 00219 if( 4 < getNumberOfPresentValues() ) 00220 { 00221 for( int i = 0 ; i < 4 ; i++ ) 00222 { 00223 float oldResult = NumericPolatorT< float >::cubicExtrapolate( t, 00224 getDate( 1 ), ( (Color&)get( 1 ) )[i], 00225 getDate( 2 ), ( (Color&)get( 2 ) )[i], 00226 getDate( 3 ), ( (Color&)get( 3 ) )[i], 00227 getDate( 4 ), ( (Color&)get( 4 ) )[i] ) ; 00228 00229 ((Color&)result)[i] = ::NumericPolatorT< float >::linearExtrapolate( t, 00230 tIndice, oldResult, 00231 2*tIndice - getDate( 1 ), ((Color&)result)[i]) ; 00232 } 00233 } 00234 } 00235 break ; 00236 // 00237 default : 00238 OMTRACEID( OMK_DEBUG_OMK_TYPE, "ColorPolator<N>::extrapolate: unknown polation level" ) ; 00239 } 00240 return result ; 00241 }
const SimpleTypeT< Color > & ColorPolator::antepolate | ( | SimpleTypeT< Color > & | result, | |
const int | requestedPolationLevel, | |||
const Date & | t, | |||
const Date & | tIndice, | |||
unsigned int | indice | |||
) | const [virtual] |
Antepolation.
Definition at line 245 of file OMKColorPolator.cpp.
References OMK::Type::PolatorNT::Constant, OMK::Type::PolatorNT::ConstantContinuous, OMK::Type::PolatorNT::Cubic, OMK::Type::PolatorNT::CubicContinuous, OMK::Type::Polator< T >::get(), OMK::Type::Polator< T >::getDate(), OMK::Type::PolatorNT::Linear, OMK_DEBUG_OMK_TYPE, OMTRACEID, OMK::Type::PolatorNT::Quadratic, and OMK::Type::PolatorNT::QuadraticContinuous.
00250 { 00251 switch ( requestedPolationLevel ) 00252 { 00253 case Constant : 00254 case ConstantContinuous : // Added by Guillermo Andrade 00255 result = get( indice ) ; 00256 break ; 00257 case Linear : 00258 { 00259 for( int i = 0 ; i < 4 ; i++ ) 00260 { 00261 ((Color&)result)[i] = NumericPolatorT< float >::linearExtrapolate( t, 00262 tIndice, ( (Color&)get( indice ) )[i], 00263 getDate( indice - 1 ), ( (Color&)get( indice - 1 ) )[i] ) ; 00264 } 00265 } 00266 break ; 00267 case Quadratic : 00268 case QuadraticContinuous : // Added by Guillermo Andrade 00269 { 00270 for( int i = 0 ; i < 4 ; i++ ) 00271 { 00272 ((Color&)result)[i] = NumericPolatorT< float >::quadraticExtrapolate( t, 00273 tIndice, ( (Color&)get( indice ) )[i], 00274 getDate( indice - 1 ), ( (Color&)get( indice - 1 ) )[i], 00275 getDate( indice - 2 ), ( (Color&)get( indice - 2 ) )[i] ) ; 00276 } 00277 } 00278 break ; 00279 case Cubic : 00280 case CubicContinuous : // Added by Guillermo Andrade 00281 { 00282 for( int i = 0 ; i < 4 ; i++ ) 00283 { 00284 ((Color&)result)[i] = NumericPolatorT< float >::cubicExtrapolate( t, 00285 tIndice, ( (Color&)get( indice ) )[i], 00286 getDate( indice - 1 ), ( (Color&)get( indice - 1 ) )[i], 00287 getDate( indice - 2 ), ( (Color&)get( indice - 2 ) )[i], 00288 getDate( indice - 3 ), ( (Color&)get( indice - 3 ) )[i] ) ; 00289 } 00290 } 00291 break ; 00292 default : 00293 OMTRACEID( OMK_DEBUG_OMK_TYPE, "ColorPolator<N>::antepolate: unknown polation level" ) ; 00294 } 00295 return result ; 00296 }
Documentation generated on Mon Jun 9 11:46:05 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |