add RageQuadratic::SetFromCubic

This commit is contained in:
Glenn Maynard
2007-01-19 06:45:59 +00:00
parent e4ea02f177
commit d277f4733d
2 changed files with 12 additions and 0 deletions
+10
View File
@@ -671,6 +671,16 @@ void RageQuadratic::GetBezier( float &fX1, float &fX2, float &fX3, float &fX4 )
fX4 = m_fD + m_fC + m_fB + m_fA;
}
/* Cubic polynomial interpolation. SetFromCubicPoly(-1, 0, 1, 2); Evaluate(p) will
* interpolate between 0 and 1. */
void RageQuadratic::SetFromCubic( float fX1, float fX2, float fX3, float fX4 )
{
m_fA = -1.0f/6.0f*fX1 + +3.0f/6.0f*fX2 + -3.0f/6.0f*fX3 + 1.0f/6.0f*fX4;
m_fB = 3.0f/6.0f*fX1 + -6.0f/6.0f*fX2 + 3.0f/6.0f*fX3;
m_fC = -2.0f/6.0f*fX1 + -3.0f/6.0f*fX2 + fX3 + -1.0f/6.0f*fX4;
m_fD = fX2;
}
float RageQuadratic::GetSlope( float fT ) const
{
return 3*m_fA*fT*fT + 2*m_fB*fT + m_fC;
+2
View File
@@ -57,6 +57,8 @@ public:
void SetFromBezier( float fC1, float fC2, float fC3, float fC4 );
void GetBezier( float &fC1, float &fC2, float &fC3, float &fC4 ) const;
void SetFromCubic( float fX1, float fX2, float fX3, float fX4 );
float Evaluate( float fT ) const;
float GetSlope( float fT ) const;