Нахождение координаты пересечения графика с осью - 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();
}