Нахождение координаты пересечения графика с осью - C#

Узнай цену своей работы

Формулировка задачи:

Возникла небольшая проблема. Используя библиотеку ZedGraph был построен график. График пересекает ось Х. Мне нужно узнать координату пересечения графика с осью Х для ее вывода. Как это можно сделать? Был бы благодарен за помощь.

Решение задачи: «Нахождение координаты пересечения графика с осью»

textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
        {            
            x1 = Convert.ToDouble(textBox1.Text);
            x2 = Convert.ToDouble(textBox2.Text);
            x3 = Convert.ToDouble(textBox3.Text);
            x4 = Convert.ToDouble(textBox4.Text);
            x5 = Convert.ToDouble(textBox5.Text);
            x6 = Convert.ToDouble(textBox6.Text);
            x7 = Convert.ToDouble(textBox7.Text);
            x8 = Convert.ToDouble(textBox8.Text);
            x9 = Convert.ToDouble(textBox9.Text);
            x10 = Convert.ToDouble(textBox10.Text);
            x11 = Convert.ToDouble(textBox11.Text);
 
            textBox12.Text = "0";
            textBox13.Text = "0";
            textBox14.Text = "0,20";
            textBox15.Text = "10";
            textBox16.Text = "24";
            textBox17.Text = "35";
            textBox18.Text = "30";
            textBox19.Text = "0,60";
            textBox20.Text = "0,20";
            textBox21.Text = "0";
            textBox22.Text = "0";
            textBox36.Text = "0";
 
            z1 = Convert.ToDouble(textBox12.Text);
            z2 = Convert.ToDouble(textBox13.Text);
            z3 = Convert.ToDouble(textBox14.Text);
            z4 = Convert.ToDouble(textBox15.Text);
            z5 = Convert.ToDouble(textBox16.Text);
            z6 = Convert.ToDouble(textBox17.Text);
            z7 = Convert.ToDouble(textBox18.Text);
            z8 = Convert.ToDouble(textBox19.Text);
            z9 = Convert.ToDouble(textBox20.Text);
            z10 = Convert.ToDouble(textBox21.Text);
            z11 = Convert.ToDouble(textBox22.Text);
            z12 = Convert.ToDouble(textBox36.Text);        
 
            if (((double)100 - z1) < 0)
            { y1 = 0; }
            else { y1 = (double)100 - z1; }
 
            if ((y1 - z2) < 0)
            { y2 = 0; }
            else { y2 = y1 - z2; }
 
            if ((y2 - z3) < 0)
            { y3 = 0; }
            else { y3 = y2 - z3; }
 
            if ((y3 - z4) < 0)
            { y4 = 0; }
            else { y4 = y3 - z4; }
 
            if ((y4 - z5) < 0)
            { y5 = 0; }
            else { y5 = y4 - z5; }
 
            if ((y5 - z6) < 0)
            { y6 = 0; }
            else { y6 = y5 - z6; }
 
            if ((y6 - z7) < 0)
            { y7 = 0; }
            else { y7 = y6 - z7; }
 
            if ((y7 - z8) < 0)
            { y8 = 0; }
            else { y8 = y7 - z8; }
 
            if ((y8 - z9) < 0)
            { y9 = 0; }
            else { y9 = y8 - z9; }
 
            if ((y9 - z10) < 0)
            { y10 = 0; }
            else { y10 = y9 - z10; }
 
            if ((y10 - z11) < 0)
            { y11 = 0; }
            else { y11 = y10 - z11; }
 
            if ((y11 - z12) < 0)
            { y12 = 0; }
            else { y12 = y11 - z12; }
 
            if (Math.Abs(sum - 100) > 0.01)
            { prc = ">1%"; }
            else { prc = "-"; }
 
            textBox23.Text = Math.Round(y1, 2).ToString();
            textBox24.Text = Math.Round(y2, 2).ToString();
            textBox25.Text = Math.Round(y3, 2).ToString();
            textBox26.Text = Math.Round(y4, 2).ToString();
            textBox27.Text = Math.Round(y5, 2).ToString();
            textBox28.Text = Math.Round(y6, 2).ToString();
            textBox29.Text = Math.Round(y7, 2).ToString();
            textBox30.Text = Math.Round(y8, 2).ToString();
            textBox31.Text = Math.Round(y9, 2).ToString();
            textBox32.Text = Math.Round(y10, 2).ToString();
            textBox33.Text = Math.Round(y11, 2).ToString();
            textBox37.Text = y12.ToString();
            textBox35.Text = prc.ToString();
 
            sum=z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8 + z9 + z10 + z11;
            textBox34.Text = (sum).ToString();
                        
            GraphPane myPane = new GraphPane();
            zedGraphControl1.GraphPane = myPane;
            myPane.CurveList.Clear();
            myPane.Fill = new Fill(Color.White, Color.LightSkyBlue, 45.0f);
 
            // Ось X будет пересекаться с осью Y на уровне Y = 0
            myPane.XAxis.Cross = 50.0;          
                       
            // Заголовок графика и подписи осей
            myPane.Title.Text = "Определение марки песка в соответствии с ГОСТ 2138-91";
            myPane.XAxis.Title.Text = "Размер ячеек";
            myPane.YAxis.Title.Text = "%";
 
            // Вспомогательная сетка
            myPane.XAxis.MajorGrid.IsVisible = true;            
            myPane.YAxis.MajorGrid.IsVisible = true;            
 
            // Вручную задаем последовательность точек графика
            PointPairList list = new PointPairList();
 
            list.Add(x1,y1);
            list.Add(x2,y2);
            list.Add(x3, y3);
            list.Add(x4, y4);
            list.Add(x5, y5);
            list.Add(x6, y6);
            list.Add(x7, y7);
            list.Add(x8, y8);
            list.Add(x9, y9);
            list.Add(x10, y10);
            list.Add(x11, y11);
 
            // Строим линию графика
            LineItem myCurve = myPane.AddCurve("График", list, Color.DarkBlue, SymbolType.Circle);
            myCurve.Line.IsSmooth = true;
            myCurve.Line.Width=2;            
            // Цвет заполнения круга - колубой
            myCurve.Symbol.Fill.Color = Color.Blue;
            // Тип заполнения - сплошная заливка
            myCurve.Symbol.Fill.Type = FillType.Solid;
            // Размер круга
            myCurve.Symbol.Size = 7;
            myPane.XAxis=
                                             
            // Устанавливаем интересующий нас интервал по оси X
            myPane.XAxis.Scale.Min = xmin;
            myPane.XAxis.Scale.Max = xmax;
                        
            // Устанавливаем интересующий нас интервал по оси Y
            myPane.YAxis.Scale.Min = ymin;
            myPane.YAxis.Scale.Max = ymax;
            
            // Обновляем отображение
            zedGraphControl1.AxisChange();
            zedGraphControl1.Refresh();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы