//---------------------------------------------------------------------- Real Math::FastSin0 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = 7.61e-03f; fResult *= fASqr; fResult -= 1.6605e-01f; fResult *= fASqr; fResult += 1.0f; fResult *= fAngle; return fResult; } //---------------------------------------------------------------------- Real Math::FastSin1 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = -2.39e-08f; fResult *= fASqr; fResult += 2.7526e-06f; fResult *= fASqr; fResult -= 1.98409e-04f; fResult *= fASqr; fResult += 8.3333315e-03f; fResult *= fASqr; fResult -= 1.666666664e-01f; fResult *= fASqr; fResult += 1.0f; fResult *= fAngle; return fResult; } //---------------------------------------------------------------------- Real Math::FastCos0 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = 3.705e-02f; fResult *= fASqr; fResult -= 4.967e-01f; fResult *= fASqr; fResult += 1.0f; return fResult; } //---------------------------------------------------------------------- Real Math::FastCos1 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = -2.605e-07f; fResult *= fASqr; fResult += 2.47609e-05f; fResult *= fASqr; fResult -= 1.3888397e-03f; fResult *= fASqr; fResult += 4.16666418e-02f; fResult *= fASqr; fResult -= 4.999999963e-01f; fResult *= fASqr; fResult += 1.0f; return fResult; } //---------------------------------------------------------------------- Real Math::FastTan0 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = 2.033e-01f; fResult *= fASqr; fResult += 3.1755e-01f; fResult *= fASqr; fResult += 1.0f; fResult *= fAngle; return fResult; } //---------------------------------------------------------------------- Real Math::FastTan1 (Real fAngle) { Real fASqr = fAngle*fAngle; Real fResult = 9.5168091e-03f; fResult *= fASqr; fResult += 2.900525e-03f; fResult *= fASqr; fResult += 2.45650893e-02f; fResult *= fASqr; fResult += 5.33740603e-02f; fResult *= fASqr; fResult += 1.333923995e-01f; fResult *= fASqr; fResult += 3.333314036e-01f; fResult *= fASqr; fResult += 1.0f; fResult *= fAngle; return fResult; } //---------------------------------------------------------------------- Real Math::FastInvSin (Real fValue) { Real fRoot = Math::Sqrt(1.0f-fValue); Real fResult = -0.0187293f; fResult *= fValue; fResult += 0.0742610f; fResult *= fValue; fResult -= 0.2121144f; fResult *= fValue; fResult += 1.5707288f; fResult = HALF_PI - fRoot*fResult; return fResult; } //---------------------------------------------------------------------- Real Math::FastInvCos (Real fValue) { Real fRoot = Math::Sqrt(1.0f-fValue); Real fResult = -0.0187293f; fResult *= fValue; fResult += 0.0742610f; fResult *= fValue; fResult -= 0.2121144f; fResult *= fValue; fResult += 1.5707288f; fResult *= fRoot; return fResult; } //---------------------------------------------------------------------- Real Math::FastInvTan0 (Real fValue) { Real fVSqr = fValue*fValue; Real fResult = 0.0208351f; fResult *= fVSqr; fResult -= 0.085133f; fResult *= fVSqr; fResult += 0.180141f; fResult *= fVSqr; fResult -= 0.3302995f; fResult *= fVSqr; fResult += 0.999866f; fResult *= fValue; return fResult; } //---------------------------------------------------------------------- Real Math::FastInvTan1 (Real fValue) { Real fVSqr = fValue*fValue; Real fResult = 0.0028662257f; fResult *= fVSqr; fResult -= 0.0161657367f; fResult *= fVSqr; fResult += 0.0429096138f; fResult *= fVSqr; fResult -= 0.0752896400f; fResult *= fVSqr; fResult += 0.1065626393f; fResult *= fVSqr; fResult -= 0.1420889944f; fResult *= fVSqr; fResult += 0.1999355085f; fResult *= fVSqr; fResult -= 0.3333314528f; fResult *= fVSqr; fResult += 1.0f; fResult *= fValue; return fResult; } //----------------------------------------------------------------------
2 - 3 commentaires seraient les bienvenus
en fait Wild Magic a dévelopé un prog d'analyse de courbe, et à partir des courbes de fonctions Cos, Sin, etc... on a des formules du genre :x²+1589/255*x²+65887/155124*1-x²+258744/899... c'est de l'aproximation, (pas tres au point fô dire , mais une fois un peupris, on a des formules qui tiennent la route. On retranscri ca en code C assez rapide et on obtient des fonction plus rapides que les standard, et qui donnent un resultat largement sufisent dans la plupart des cas...Mais le code est compréhensible non?
Il aurait pu quand même expliquer le fonctionement parce que la il balance les chiffres comme ça. J'avais pas pigé que c'était une aproximation à partir des courbes
hello, j'ai fait un test de rapidité, et c kifkif avec les fonctions standarts...
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte