예제 #1
0
        public void FunctionValueTest()
        {
            // Arrange.
            MyFunction func = new MyFunction { Y = 0.827, Z = 25.001 };

            // Act.
            double val = func[6.251];

            // Assert.
            Assert.AreEqual(0.7121, val, 1e-4);
        }
예제 #2
0
파일: MainForm.cs 프로젝트: iamnp/Plotter
        /// <summary>
        ///     Обработчик нажатия кнопки построения графика функции.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void plotFuncButton_Click(object sender, EventArgs e)
        {
            // Проверяем вводимые данные на корректность.
            if (!xMinInputBox.DoubleValueAvailable)
            {
                xMinInputBox.Focus();
                xMinInputBox.SelectAll();
                return;
            }
            if (!xMaxInputBox.DoubleValueAvailable)
            {
                xMaxInputBox.Focus();
                xMaxInputBox.SelectAll();
                return;
            }
            if (!dxInputBox.DoubleValueAvailable)
            {
                dxInputBox.Focus();
                dxInputBox.SelectAll();
                return;
            }
            if (xMinInputBox.DoubleValue > xMaxInputBox.DoubleValue)
            {
                MessageBox.Show("Xmax должно быть меньше или равно Xmin", "Ошибка", MessageBoxButtons.OK);
                return;
            }
            if (dxInputBox.DoubleValue <= 0.0)
            {
                MessageBox.Show("∆x должно быть больше 0", "Ошибка", MessageBoxButtons.OK);
                return;
            }

            // Устанавливаем граничные значения для оси X.
            plotterControl1.Settings.StartX = xMinInputBox.DoubleValue;
            plotterControl1.Settings.StopX  = xMaxInputBox.DoubleValue;

            _myFunction = new MyFunction
            {
                Y = yTrackBar.Value,
                Z = zTrackBar.Value
            };

            var points = _myFunction.Evaluate(xMinInputBox.DoubleValue, xMaxInputBox.DoubleValue,
                                              dxInputBox.DoubleValue);

            // Устанавливаем граничные знчения для оси Y.
            var maxY = 1.0;
            var minY = -1.0;

            if (points != null)
            {
                maxY = points.Max(p => p.Max(k => k.Y));
                minY = points.Min(p => p.Min(k => k.Y));
            }
            var d = (maxY - minY) / 10;

            if (Math.Abs(maxY - minY) < 1e-9)
            {
                d = 1;
            }
            plotterControl1.Settings.StopY  = maxY + d;
            plotterControl1.Settings.StartY = minY - d;

            // Добавляем задание для отрисовки нашей функции.
            plotterControl1.Tasks.Clear();
            plotterControl1.Tasks.Add(new PlotterControl.PlotTask {
                Points = points, Legend = "F(x)"
            });
            if (oneToOneYScaleRadioButton.Checked)
            {
                plotterControl1.Settings.ScaleY = plotterControl1.CalculateOneToOneScaleY();
            }
            plotterControl1.Redraw();
            _drawIntegralButtons.SetProperty("Enabled", true);
        }