{\r
public partial class BinomialSolver : ChildWindow\r
{\r
+ System.Windows.Shapes.Line line;\r
int func_selected;\r
Psychlops.Solver.Constants.Func1 func1;\r
Psychlops.Solver.Constants.Func2 func2;\r
\r
chart1.DataContext = data;\r
solver = new Psychlops.Solver.BinomialLikelihood();\r
+ line = new Line();\r
+ line.X1 = 0;\r
+ line.Y1 = 0;\r
+ line.X2 = ChartCanvas.ActualWidth;\r
+ line.Y2 = 0;\r
+ ChartCanvas.Children.Add(line);\r
+ OText.DataContext = OrdinateSlider;\r
}\r
public class Data\r
{\r
this.UpdateLayout();\r
}\r
\r
- private void AbscissaSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)\r
+ private void RemoveConditionButton_Click(object sender, RoutedEventArgs e)\r
{\r
- solver.champ[0] = AbscissaSlider.Value;\r
- reFunc();\r
+ 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
}\r
\r
}\r