#include "LeastSquarePolynomial.h" // form of [ y = a1*x + a2 ] void CalcEquation2(float afA[2], const float afX[2], const float afY[2]) { afA[0] = (afY[0]-afY[1])/(afX[0]-afX[1]); afA[1] = afY[0] - afA[0]*afX[0]; } // form of [ y = a1*x*x + a2*x + a3 ] void CalcEquation3(float afA[3], const float afX[3], const float afY[3]) { //afY[0] = afA[0]*afX[0]*afX[0] + afA[1]*afX[0] + afA[2]; //afY[1] = afA[0]*afX[1]*afX[1] + afA[1]*afX[1] + afA[2]; //(afY[0]-afY[1]) = afA[0]*(afX[0]*afX[0]-afX[1]*afX[1]) + afA[1]*(afX[0]-afX[1]); //(afY[0]-afY[2]) = afA[0]*(afX[0]*afX[0]-afX[2]*afX[2]) + afA[1]*(afX[0]-afX[2]); //(afY[0]-afY[1])/(afX[0]-afX[1]) = afA[0]*(afX[0]*afX[0]-afX[1]*afX[1])/(afX[0]-afX[1]) + afA[1]; //(afY[0]-afY[2])/(afX[0]-afX[2]) = afA[0]*(afX[0]*afX[0]-afX[2]*afX[2])/(afX[0]-afX[2]) + afA[2]; const float afNewX[2] = { (afX[0]*afX[0]-afX[1]*afX[1])/(afX[0]-afX[1]), (afX[0]*afX[0]-afX[2]*afX[2])/(afX[0]-afX[2]) }; const float afNewY[2] = { (afY[0]-afY[1])/(afX[0]-afX[1]), (afY[0]-afY[2])/(afX[0]-afX[2]) }; CalcEquation2(afA, afNewX, afNewY); afA[2] = afY[0] - afA[0]*afX[0]*afX[0] - afA[1]*afX[0]; } // form of [ y = a1*x*x*x + a2*x*x + a3*x + a4 ] void CalcEquation4(float afA[4], const float afX[4], const float afY[4]) { //afY[0] = afA[0]*afX[0]*afX[0]*afX[0] + afA[1]*afX[0]*afX[0] + afA[2]*afX[0] + afA[3]; //afY[1] = afA[0]*afX[1]*afX[1]*afX[1] + afA[1]*afX[1]*afX[1] + afA[2]*afX[1] + afA[3]; //(afY[0]-afY[0]) = afA[0]*(afX[0]*afX[0]*afX[0]-afX[1]*afX[1]*afX[1]) + afA[1]*(afX[0]*afX[0]-afX[1]*afX[1]) + afA[2]*(afX[0]-afX[1]); //(afY[0]-afY[0])/(afX[0]-afX[1]) = afA[0]*(afX[0]*afX[0]*afX[0]-afX[1]*afX[1]*afX[1])/(afX[0]-afX[1]) + afA[1]*(afX[0]*afX[0]-afX[1]*afX[1])/(afX[0]-afX[1]) + afA[2]; const float afNewX[3] = { (afX[0]*afX[0]*afX[0]-afX[1]*afX[1]*afX[1])/(afX[0]-afX[1]), (afX[0]*afX[0]*afX[0]-afX[2]*afX[2]*afX[2])/(afX[0]-afX[2]), (afX[0]*afX[0]*afX[0]-afX[3]*afX[3]*afX[3])/(afX[0]-afX[3]) }; const float afNewY[3] = { (afY[0]-afY[0])/(afX[0]-afX[1]), (afY[0]-afY[0])/(afX[0]-afX[2]), (afY[0]-afY[0])/(afX[0]-afX[3]) }; CalcEquation3(afA, afNewX, afNewY); afA[3] = afY[0] - afA[0]*afX[0]*afX[0]*afX[0] - afA[1]*afX[0]*afX[0] - afA[2]*afX[0]; }