@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
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@Sumor
x[i] = x[i] / 6.25;
Ну собственно если у вас xMax равен 1, то и получается что график строится до 1/6,25 = 0,16 как и выглядит на экране.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы