+ data.RemoveAt(data.Count-1);\r
+ this.UpdateLayout();\r
+ }\r
+\r
+ private void OrdinateSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)\r
+ {\r
+ if (solver.champ[0] == 0.0) return;\r
+ int dir = 1, pdir, dirr=0, ii = 0;\r
+ double d = (maximum - minimum) * 0.25;\r
+ double refval = OrdinateSlider.Value;\r
+ double x1 = solver.champ[0], x2= x1 + d, v1, v2, tmp;\r
+ switch (func_selected)\r
+ {\r
+ case 1:\r
+ break;\r
+ case 2:\r
+ while (dirr < 32)\r
+ {\r
+ pdir = dir;\r
+ v1 = Math.Abs(refval - func2(x1, solver.champ[0], solver.champ[1]));\r
+ v2 = Math.Abs(refval - func2(x2, solver.champ[0], solver.champ[1]));\r
+ if (v1 > v2)\r
+ {\r
+ tmp = x2;\r
+ x1 = x2;\r
+ x2 = tmp + d;\r
+ dir = 1;\r
+ }\r
+ else\r
+ {\r
+ tmp = x1;\r
+ x2 = x1;\r
+ x1 = tmp - d;\r
+ dir = -1;\r
+ }\r
+ if (ii>32 || dir != pdir) { d /= 2; dirr++; ii = 0; }\r
+ ii++;\r
+ }\r
+ break;\r
+ case 3:\r
+ break;\r
+ }\r
+\r
+ AbscissaSlider.Value = (x1+x2)/2.0;\r
+ Parameter0.Text = AbscissaSlider.Value.ToString();\r
+ line.Y1 = refval * 200;\r
+ line.Y2 = refval * 200;\r