none
Построение графиков функций по точкам RRS feed

  • Вопрос

  • Всем доброго времени суток.

    Сразу скажу: я знаю - что тема древнейший баян, но ситуация у меня поинтереснее.

    На входе есть следующий набор данных:

    1) minX, maxX - промежуток оси X декартовой системы координат;

    2) minY, maxY - то же, что и первое, только уже ось Y (как ни странно);

    3) математическая функция; для примера что нибудь из простого - sin(x);

    4) шаг изменения значения X.

    Алгоритм получения значений функции следующий: 

    int length=(int)Math.Truncate((maxX-minX)/step)+1; // step - шаг, описанный в пункте 4
    double[] resultsY=new double[length];
    int index=0;
    for (double x=minX;x<=maxX;x+=step)
    {
    	resultsY[index]=Math.Sin(x);
    	index++;
    }

    Дальше массив resultsY должен быть отправлен в обработку - то самое построение графика. На конечном графике не нужно никаких плюшек из ряда масштаба/автомасштаба и прочее - значения Y вычисляются в исключительно указанном промежутке, этот же промежуток должен быть отображён на графике.

    Собственно говоря, я не понял, как пользоваться Chart'ом, и сомневаюсь, что он подходит для этих целей.

    На выходе мне нужно получить изображение, что то из ряда этого, только проще - просто лини с надписями (x,y) и пределы промежутков.

    Я могу нарисовать такой график руками в каком нибудь PictureBox, это мне даже интересно, но на это нет времени.

    Разузнал что то типа ZedGraph, но его я тоже чего то не понял.

    Что вы можете подсказать мне для решения поставленной задачи ?




    11 ноября 2015 г. 22:07

Ответы

  • Добрый день,

    тема действительно старая. Я думаю вам проще нарисовать самому то что надо (делов на 5 минут), чем ждать от кого то ответ. Плоскость ведь, ни матриц, ни кубов нет, интерполяцией не занимаетесь, в чем сложность? Это задача школьного курса информатики. И ситуация у вас не по интереснее, а наоборот самый частный случай. Линейно масштабируя привести значения функции к координатам изображения и вывести.

    13 ноября 2015 г. 3:18

Все ответы

  • Добрый день,

    тема действительно старая. Я думаю вам проще нарисовать самому то что надо (делов на 5 минут), чем ждать от кого то ответ. Плоскость ведь, ни матриц, ни кубов нет, интерполяцией не занимаетесь, в чем сложность? Это задача школьного курса информатики. И ситуация у вас не по интереснее, а наоборот самый частный случай. Линейно масштабируя привести значения функции к координатам изображения и вывести.

    13 ноября 2015 г. 3:18
  • Добрый день,

    тема действительно старая. Я думаю вам проще нарисовать самому то что надо (делов на 5 минут), чем ждать от кого то ответ. Плоскость ведь, ни матриц, ни кубов нет, интерполяцией не занимаетесь, в чем сложность? Это задача школьного курса информатики. И ситуация у вас не по интереснее, а наоборот самый частный случай. Линейно масштабируя привести значения функции к координатам изображения и вывести.

    Собственно, пока я ждал 18 часов -  сделал так, как вы сказали.

    Ну а интересность для моего случая - вещественные числа. В интернете все примеры пишутся для целых чисел на графике. А мне для каждого числа нужно более точно вычислять позицию в координатах PictureBox.


    13 ноября 2015 г. 9:36
  • Если цель - научиться программировать графики, то плиз, 
    наиболее полная информация здесь -
    https://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=4418

    Если же цель - рисовка и использование графиков - то Excel.

    Я потратил уйму времени на программирование рисовок,
    и так и не получил нужной функциональности,
    поскольку это большая работа и одному ее не осилить.
    А в Excel - е все готово - загружаешь текстовый файл, 
    пару кликов и графики перед глазами -
    1, 2, 3, ... сколько нужно, совмещенные, в любом формате,
    любого цвета, с подписями и без.
    16 ноября 2015 г. 12:06