Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }