private void ShowTable(object sender, RoutedEventArgs e) { double _a = Math.Abs(A); double left_border = -_a; double right_border = _a; if (db_left_border.Value.HasValue && db_right_border.Value.HasValue) { left_border = db_left_border.Value.Value; right_border = db_right_border.Value.Value; if (left_border < -_a) { left_border = -_a; } if (right_border > _a) { right_border = _a; } } List <TableValue> table = new List <TableValue>(); double step = db_step.Value.Value; for (double x = left_border; x <= right_border; x += step) { TableValue row = new TableValue(); row.X = Math.Round(x, 2); row.Y = Math.Round(MainVM.GetFunc(x, _a), 2); table.Add(row); } TableValueWindow Table = new TableValueWindow(table); Table.Show(); }
private void SettingsValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { if (db_left_border == null || db_right_border == null || l_error == null) { return; } List <Point> points_p = new List <Point>(); List <Point> points_n = new List <Point>(); double _a = Math.Abs(A / 0.3); double left_border = -_a; double right_border = _a; if (db_left_border.Value.HasValue && db_right_border.Value.HasValue) { left_border = db_left_border.Value.Value / 0.3; right_border = db_right_border.Value.Value / 0.3; if (left_border < -_a) { left_border = -_a; } if (right_border > _a) { right_border = _a; } if (right_border < left_border) { if (((System.Windows.Controls.Slider)sender) == sl_left_border) { db_right_border.Value = db_left_border.Value; } else { db_left_border.Value = db_right_border.Value; } l_error.Content = "Невозможно построить график"; } else if (right_border == 0 && left_border == 0 || Math.Abs(db_left_border.Value.Value) == Math.Abs(A) && Math.Abs(db_right_border.Value.Value) == Math.Abs(A)) { l_error.Content = "График выраждаеться в точку"; } else { l_error.Content = string.Empty; } } for (double x = left_border; x <= left_border + 0.001; x += 0.0001) { double y = MainVM.GetFunc(x, _a); if (!double.IsNaN(y)) { points_p.Add(new Point(x, -y)); points_n.Add(new Point(x, y)); } } for (double x = left_border + 0.01; x < right_border - 0.01; x += 0.1) { double y = MainVM.GetFunc(x, _a); if (!double.IsNaN(y)) { points_p.Add(new Point(x, -y)); points_n.Add(new Point(x, y)); } } for (double x = right_border - 0.001; x <= right_border; x += 0.0001) { double y = MainVM.GetFunc(x, _a); if (!double.IsNaN(y)) { points_p.Add(new Point(x, -y)); points_n.Add(new Point(x, y)); } } PointsPositive = new ObservableCollection <Point>(points_p); PointsNegative = new ObservableCollection <Point>(points_n); }