@bulavko

Почему WinForms странно строит графики, в зависимости от максимального значения икса?

Доброго времени суток)

Писал программу для построение графика синуса и косинуса и столкнулся с такой деликатной проблемой:
компонент Chart очень странно себя ведёт, если не умножить переменную, которая отвечает за максимальное значение на оси иксов, на 2пи

"Шерстил" StackOverflow - так и ничего не нашёл...

Прикрепляю код:
private void buttonPlot_Click(object sender, EventArgs e)
        {
            double xMin = 0;
            double xMax = double.Parse(textBoxTime.Text) * 6.28;
            int discretization = int.Parse(textBoxDiscretization.Text);
            double time = double.Parse(textBoxTime.Text);
            double deltaT = Math.Round((double)discretization / (double)time);
            int amplitude = int.Parse(textBoxAmplitude.Text);
            double frequency = double.Parse(textBoxFrequency.Text);
            double phase = ConvertToRadians(double.Parse(textBoxPhase.Text));
            double step = 0.5;

            int plotPointsCount = (int)(Math.Ceiling((xMax - xMin)) / step) + 1;

            double[] x = new double[plotPointsCount];
            double[] ySin = new double[plotPointsCount];
            double[] yCos = new double[plotPointsCount];

            for (int i = 0; i < plotPointsCount; i++)

            {
                x[i] = xMin + step * i;
                ySin[i] = amplitude * Math.Sin(x[i] + (2 * Math.PI * frequency * deltaT + phase));
                yCos[i] = amplitude * Math.Cos(x[i] + (2 * Math.PI * frequency * deltaT + phase));
                x[i] = x[i] / 6.25;

            }

            chart1.ChartAreas[0].AxisX.Minimum = xMin;
            chart1.ChartAreas[0].AxisX.Maximum = xMax / 6.28;
            chart1.ChartAreas[0].AxisX.MajorGrid.Interval = step;

            chart1.Series[0].Points.DataBindXY(x, ySin);
            chart1.Series[1].Points.DataBindXY(x, yCos);
        }


и фотографии того, как ведёт себя компонент Chart:
1) переменная не умножена и не разделенна на 2пи
2) переменная умножена и разделенна на 2пи

5c22c4f5d1add158910541.jpeg5c22c503dcaf0344233156.jpeg
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@Sumor
x[i] = x[i] / 6.25;
Ну собственно если у вас xMax равен 1, то и получается что график строится до 1/6,25 = 0,16 как и выглядит на экране.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 40 000 до 70 000 руб.
SLC7 Екатеринбург
от 50 000 до 90 000 руб.
Fmedia Санкт-Петербург
от 120 000 до 150 000 руб.
18 янв. 2019, в 21:37
1500 руб./за проект
18 янв. 2019, в 19:30
150000 руб./за проект
18 янв. 2019, в 18:43
1000 руб./в час