]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Interpolator.hh
the massive refactoring effort
[chaz/yoink] / src / Moof / Interpolator.hh
diff --git a/src/Moof/Interpolator.hh b/src/Moof/Interpolator.hh
deleted file mode 100644 (file)
index db91e10..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-
-/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
-**]  All rights reserved.
-*
-* vi:ts=4 sw=4 tw=75
-*
-* Distributable under the terms and conditions of the 2-clause BSD license;
-* see the file COPYING for a complete text of the license.
-*
-**************************************************************************/
-
-#ifndef _MOOF_INTERPOLATOR_HH_
-#define _MOOF_INTERPOLATOR_HH_
-
-#include <Moof/Log.hh>
-#include <Moof/Math.hh>
-
-
-namespace Mf {
-
-
-namespace Interp {
-
-       typedef enum
-       {
-               STOP            = 0,
-               REPEAT          = 1,
-               OSCILLATE       = 2
-       } Mode;
-
-} // namespace Interp
-
-
-template <class T>
-class Interpolator : public T
-{
-public:
-
-       Interpolator(Scalar t = 1.0, Interp::Mode mode = Interp::STOP)
-       {
-               reset(t, mode);
-       }
-
-       void reset(Scalar t = 1.0, Interp::Mode mode = Interp::STOP)
-       {
-               mAlpha = 0.0;
-               mScale = 1.0 / t;
-               mMode = mode;
-               mIsDone = false;
-       }
-
-       void update(Scalar t, Scalar dt)
-       {
-               if (!mIsDone)
-               {
-                       mPrevState = T::getValue();
-                       mAlpha += dt * mScale;
-                       clamp();
-                       if (mPrevState == T::calculate(mAlpha)) mIsDone = true;
-               }
-       }
-
-       typename T::Type getState(Scalar alpha) const
-       {
-               return cml::lerp(mPrevState, T::getValue(), alpha);
-       }
-
-       bool isDone() const
-       {
-               return mIsDone;
-       }
-
-private:
-
-       void clamp()
-       {
-               if (mAlpha > 1.0)
-               {
-                       switch (mMode)
-                       {
-                               case Interp::STOP:
-                                       mAlpha = SCALAR(1.0);
-                                       break;
-                               case Interp::REPEAT:
-                                       mAlpha -= SCALAR(1.0);
-                                       break;
-                               case Interp::OSCILLATE:
-                                       mAlpha = SCALAR(2.0) - mAlpha;
-                                       mScale = -mScale;
-                                       break;
-                       }
-               }
-               else if (mAlpha < 0.0)
-               {
-                       switch (mMode)
-                       {
-                               case Interp::STOP:
-                                       mAlpha = SCALAR(0.0);
-                                       break;
-                               case Interp::REPEAT:
-                                       mAlpha += SCALAR(1.0);
-                                       break;
-                               case Interp::OSCILLATE:
-                                       mAlpha = -mAlpha;
-                                       mScale = -mScale;
-                                       break;
-                       }
-               }
-       }
-
-       Scalar                          mAlpha;
-       Scalar                          mScale;
-       Interp::Mode            mMode;
-       bool                            mIsDone;
-
-       typename T::Type        mPrevState;
-};
-
-
-template <class T = Scalar>
-class Linear
-{
-public:
-
-       typedef T Type;
-
-       void init(const Type& a, const Type& b)
-       {
-               mStart = a;
-               mFinish = b;
-       }
-
-       const Type& calculate(Scalar alpha)
-       {
-               mState = cml::lerp(mStart, mFinish, alpha);
-               return mState;
-       }
-
-       const Type& getValue() const
-       {
-               return mState;
-       }
-
-private:
-
-       Type    mState;
-       Type    mStart;
-       Type    mFinish;
-};
-
-
-typedef Interpolator< Linear<Scalar> > Lerp;
-
-
-} // namespace Mf
-
-#endif // _MOOF_INTERPOLATOR_HH_
-
This page took 0.021449 seconds and 4 git commands to generate.