Import upstream version 0.99.2
[fmit.git] / libs / CppAddons / Fit.h
index 4ced5f4..a0cc638 100644 (file)
 
 namespace Math
 {
-       void FitParabola(double x1, double y1, double x2, double y2, double x3, double y3,
-                                       double& a, double& b, double& c, double& xapex, double& yapex);
+    inline void FitParabola(double x1, double y1, double x2, double y2, double x3, double y3,
+                        double& a, double& b, double& c, double& xapex, double& yapex)
+    {
+        assert(x1!=x2 && x1!=x3 && x2!=x3);
+
+        double h31 = (y3-y1)/(x3-x1);
+        double h21 = (y2-y1)/(x2-x1);
+
+        a = (h31-h21)/(x3-x2);
+        b = h21 - a*(x2+x1);
+        c = y1 - a*x1*x1 - b*x1;
+
+        xapex = -b/2/a;
+        yapex = c - b*b/4/a;
+    }
 }
 
 #endif