All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CatmullRomInterpolation.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMath.h"
6 
7 namespace Eegeo
8 {
9  namespace Geometry
10  {
11  inline void CatmullRomInterpolationInPlace(const double t, const dv3& p0, const dv3& p1, const dv3& p2, const dv3& p3, dv3& out_result)
12  {
13  double t2 = t*t;
14  double t3 = t*t*t;
15 
16  out_result = 0.5 * ((2.0 * p1) +
17  (-p0 + p2) * t +
18  (2.0*p0 - 5.0*p1 + 4.0*p2 - p3) * t2 +
19  (-p0 + 3.0*p1 - 3.0*p2 + p3) * t3);
20  }
21  }
22 }