add RageQuadratic::SetFromCubic
This commit is contained in:
@@ -671,6 +671,16 @@ void RageQuadratic::GetBezier( float &fX1, float &fX2, float &fX3, float &fX4 )
|
|||||||
fX4 = m_fD + m_fC + m_fB + m_fA;
|
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
|
float RageQuadratic::GetSlope( float fT ) const
|
||||||
{
|
{
|
||||||
return 3*m_fA*fT*fT + 2*m_fB*fT + m_fC;
|
return 3*m_fA*fT*fT + 2*m_fB*fT + m_fC;
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ public:
|
|||||||
void SetFromBezier( float fC1, float fC2, float fC3, float fC4 );
|
void SetFromBezier( float fC1, float fC2, float fC3, float fC4 );
|
||||||
void GetBezier( float &fC1, float &fC2, float &fC3, float &fC4 ) const;
|
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 Evaluate( float fT ) const;
|
||||||
float GetSlope( float fT ) const;
|
float GetSlope( float fT ) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user