MathGL
, разработанной А.А. Балакиным. Документация по библиотеке доступна здесь.
Идея создания графиков состоит в том, что с помощью средств библиотеки MathGL
в памяти компьютреа создаются и настраиваются такие объекты рисунка как кривые, координатные линии, сетка, легенда и т.д., после чего полученный образ рисунка записывается в файл.
В некоторых простейших случаях графики можно вывести и на терминал, не пользуясь никакими сторонними библиотеками. При этом все видимое пространство консоли можно рассматривать как "холст", на котором можно оставлять пустые пространства (символами пробелов) и рисовать "точки" (непробельными символами). В данном примере предполагается, что размер консоли стандартный: 80 символов в строке на 25 строк. Если это не так, необходимо соответствующим образом изменить значения макроопределений XMAX
и YMAX
.
Внимательно изучите и наберите в редакторе исходный текст предлагаемой программы:
$ vim textplot.c
Cкомпилируйте и запустите программу:
$ gcc textplot.c -o textplot -lm
$ ./textplot
Попробуйте другие варианты запуска программы:
$ ./textplot 0
$ ./textplot 0 1.5
$ ./textplot 0 1r5
$ ./textplot 1.5 0
$ ./textplot 1 2 3
Объясните, что при этом происходит? Вспомните, как работает функция strtod()
:
$ man strtod
Зачем были введены целочисленные массивы xx
и yy
? Что нужно изменить в тексте программы для того, чтобы построить графики других функций?
Внимательно изучите и наберите в редакторе исходный текст следующей программы:
$ vim sinplot.c
Cкомпилируйте и запустите программу:
$ gcc sinplot.c -o sinplot -lmgl
$ ./sinplot
Запущенная нами программа ничего не вывела на экран, т.к. её основное назначение состоит в том, чтобы создать файл с графиком. Убедитесь в том, что файл был создан:
$ ls -l
Если программа отработала корректно, в текущем каталоге появится файл plot.png
. Теперь нам надо отобразить на экране этот файл для того чтобы полностью убедиться в правильности работы программы. Для этого следует подключиться к рабочему серверу по протоколу FTP (ваш браузер должен поддерживать этот протокол).
Что такое HMGL
и HMDT
? Каково назначение функций mgl_data_set_double()
, mgl_set_range_val()
, mgl_label()
, mgl_add_legend()
, и т.п.? Для ответа на эти вопросы рекомендуется пользоваться документацией по библиотеке MathGL
.
Достаточно часто возникает необходимость построить несколько кривых на одном графике. В качестве примера построим траектории лодки, пересекающей реку с постоянной скоростью, направленной в точку с координатами (0,0)
при разных отношениях скорости реки к скорости лодки (параметр "бета"). Переменная L
- это ширина реки, изначально лодка находилась в положении с координатами (0,L)
. Внимательно изучите и наберите в редакторе текст программы:
$ vim multiplot.c
Cкомпилируйте и запустите программу:
$ gcc multiplot.c -o multiplot -lmgl
$ ./multiplot
В случае успешного завершения компиляции и выполнения программы выполните те же действия, что и в конце предыдущего примера. Убедитесь в том, что график построен правильно. Если ваша программа отработала корректно, то рисунок должен быть таким:
Объясните, почему в программе используется так много двумерных массивов? Каково назначение массивов legend
, Beta_text
и atr
? Как работает функция sprintf()
?
MathGL
удобнее сразу получить файл формата .gif
.
Внимательно изучите и наберите в редакторе исходный текст предлагаемой программы:
$ vim gif.c
Cкомпилируйте и запустите программу:
$ gcc gif.c -o gif -lmgl
$ ./gif
Замечание. Выполнение программы происходит достаточно долго, дождитесь корректного завершения её работы.
Убедитесь в том, что программа создала файл plot.gif
. После этого установите права полученного файла на чтение:
$ ls
$ chmod +r plot.gif
Теперь, как и ранее скопируйте полученный файл в общедоступный каталог и пронаблюдайте полученный результат.