Нахождение координаты пересечения графика с осью - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д