diff --git a/LeastSquarePolynomial.cpp b/LeastSquarePolynomial.cpp
new file mode 100644
index 0000000..e161e29
--- /dev/null
+++ b/LeastSquarePolynomial.cpp
@@ -0,0 +1,60 @@
+#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];
+}
\ No newline at end of file
diff --git a/LeastSquarePolynomial.h b/LeastSquarePolynomial.h
new file mode 100644
index 0000000..e69de29
diff --git a/PatternChecker.vcproj b/PatternChecker.vcproj
index d74a8a5..4d10a34 100644
--- a/PatternChecker.vcproj
+++ b/PatternChecker.vcproj
@@ -161,6 +161,10 @@
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
+
+
@@ -179,6 +183,10 @@
RelativePath=".\Define.h"
>
+
+