Exemplo n.º 1
0
        private void integrateButton_Click(object sender, EventArgs e)
        {
            string input = inputTextbox.Text.Replace(" ", string.Empty);

            plotter.ProcessString(input);

            try {
                var model = new PlotModel {
                    Title = "AreaSeries"
                };

                var integralBoundaries = Boundaries(integralInput.Text);
                var funcBoundaries     = Boundaries(xValueTextbox.Text);

                var area = new AreaSeries {
                    Title = "Area = " + plotter.ProcessIntegral(integralBoundaries[0], integralBoundaries[1])
                };
                List <DataPoint> areaPoints = new List <DataPoint> ();
                var function = new FunctionSeries {
                    Title = "function"
                };
                List <DataPoint> funcPoints = new List <DataPoint> ();


                // function itself
                for (int i = funcBoundaries[0]; i < funcBoundaries[1]; i++)
                {
                    funcPoints.Add(new DataPoint(i, plotter.ProcessTree(i, plotter.Root)));
                    if (i >= integralBoundaries[0] && i <= integralBoundaries[1])
                    {
                        areaPoints.Add(new DataPoint(i, plotter.ProcessTree(i, plotter.Root)));
                        area.Points2.Add(new DataPoint(i, 0));
                    }
                }

                area.Points.AddRange(areaPoints);
                function.Points.AddRange(funcPoints);

                area.Color2 = OxyColors.Transparent;

                model.Series.Add(area);
                model.Series.Add(function);

                var x = Task.Run(() => GetInputImageFromWolfram(plotter.PrefixToInfix(inputTextbox.Text.Replace(" ", string.Empty)),
                                                                integralPictureBox,
                                                                wolframIntegral));

                plot.Model = model;
            } catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }