LINUX.ORG.RU

Вышла библиотека MathGL 1.7 и программа UDAV 0.4

 , , , ,


0

1

Библиотека MathGL предназначена для построения широкого спектра графиков (кривых, поверхностей, поверхностей уровня и т.д.). Библиотека платформонезависимая. Есть возможность экспорта графики в растровые (PNG, JPEG, TIFF) или векторные (EPS, SVG, IDTF) файлы, рисования в консольном режиме и т.д. Из нового:

  • полностью переписан парсер MGL (появились условия, циклы, юникод тест, экспорт в С++ и пр.),
  • экспорт в IDTF,
  • аппроксимация данных аналитической функцией (nonlinear fitting),
  • новые функции обработки данных,
  • улучшения в цветовой схеме, метках, С/фортран-интерфейсе и пр.

Сайт программы: http://mathgl.sf.net

UDAV — программа построения графиков и изображений на основе скриптового языка MathGL. Поддерживается широкий спектр графиков и функций редактирования данных. Оконный интерфейс (на основе Qt4) позволяет вращать/двигать/приближать графики мышкой и с помощью меню, включать/выключать прозрачность и освещение, смотреть на графики с разных углов зрения (при разных параметрах построения).

В этой версии полностью переписан интерфейс с использованием Qt4, сделано множество улучшений и изменений.

Сайт программы: http://udav.sf.net

>>> Подробности

Кто-нибудь может посоветовать использовать это вместо gnuplot?

По ссылке не ходил.

naryl ★★★★★
()
Ответ на: комментарий от abalakin

Почему все изобретают каждый раз новый скриптовый язык ..... можно же привязать к Python-у или на худой конец к Scheme :-)

anonymous
()
Ответ на: комментарий от anonymous

Для меня MGL удобнее: одна команда - одно действие. К следующей версии (или скорее к осени) буду писать интерфейсы ко всему на свете. А то никто за это не берется :(, хотя обещают ...

abalakin ★★
() автор топика

а оно умеет делать интерполяцию по набору точек на плоскости с их Z координатами, если точки не по сетке а как попало?

anonymous
()
Ответ на: комментарий от anonymous

>Почему все изобретают каждый раз новый скриптовый язык ..... можно же привязать к Python-у или на худой конец к Scheme :-)

Зачем эти дикосити? С++ - и все.

r ★★★★★
()
Ответ на: комментарий от anonymous

> а оно умеет делать интерполяцию по набору точек на плоскости с их Z координатами, если точки не по сетке а как попало?

Угу, см. mglGraph::Crust(). Хотя работает и не оптимально. Лучше (для скорости) использовать внешнюю процедуру для построения сетки из треугольников и именно ее рисовать.

abalakin ★★
() автор топика
Ответ на: комментарий от r

> Зачем эти дикосити? С++ - и все.

Еще чистый С неплох -- его все другие языки цепляют на ура.

abalakin ★★
() автор топика

В тексте новости ошибка: не UDAV, a UDAFF

anonymous
()
Ответ на: комментарий от abalakin

Всё что нужно - строить двумерные графики по таблицам. Пишу на D, поэтому обязателен C интерфейс или хотя-бы CLI.

naryl ★★★★★
()
Ответ на: комментарий от naryl

> Всё что нужно - строить двумерные графики по таблицам. Пишу на D, поэтому обязателен C интерфейс или хотя-бы CLI.

Это все есть. И еще много сверх того :).

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

Нет ли идей сделать возможность создания графиков из Maxima? На подобие того, как оттуда можно пользоваться gnuplot-ом?

tis ★★
()
Ответ на: комментарий от tis

> Нет ли идей сделать возможность создания графиков из Maxima? На подобие того, как оттуда можно пользоваться gnuplot-ом?

Пока нет, хотя желание есть :) - сам максимой пользуюсь часто. Видимо надо контактировать с разработчиком wxMaxima или самому разбираться в коде (но пока нет времени :( ).

abalakin ★★
() автор топика
Ответ на: комментарий от tis

> Сессия, да? ;-)

Последняя моя сесия была лет 10 назад :). На самом деле хочу докторскую написать в этом году и поэтому форсирую дописывание статей и доделывание хвостов (белых пятен).

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

> хочу докторскую написать в этом году Склоняю почтительно голову.

А на какую тему, если не секрет?

tis ★★
()
Ответ на: комментарий от tis

> А на какую тему, если не секрет?

Пока выбираю между столкновениями в плазме и квазиоптикой. Вторая тема интереснее, но пока меньше материала.

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

Алексей, спасибо! Пользуюсь относительно давно, нравится. В учебе хорошо помогает :)

anonymous
()
Ответ на: комментарий от anonymous

Скорее, это Гнуплот, только совсем другой и более удобный.

tis ★★
()
Ответ на: комментарий от abalakin

Кстати, а существуют ли планы выпуска ебилдов? В гентушном оверлее science есть ебилд, но он маскед, и уже старый ;-(

tis ★★
()
Ответ на: комментарий от tis

> Кстати, а существуют ли планы выпуска ебилдов? В гентушном оверлее science есть ебилд, но он маскед, и уже старый ;-(

В понедельник выложу пакеты для Debian (точнее будут доступны по ссылке) и Fedora RPM. Скорее всего к вечеру.

abalakin ★★
() автор топика
Ответ на: комментарий от anonymous

> Как я понял, это потуга создать нечто вроде Mathematica... Ну-ну.. ну-ну)

Аналог Mathematica -- Maxima. MathGL & UDAV скорее аналог gnuplot, Grapher, Surfer, Matlab (в плане графиков) и пр. Основная цель строить графики + минимальная обработка данных (наиболее распространенные функции). Причем строить в том числе и в консольном режиме, и для больших объемов данных (сколько оперативки хватит).

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

Grapher'ом и Surfer'ом пользуюсь постоянно. Жду не дождусь когда MathGL станет столь же удобным и наконец-то можно будет о них забыть.

halyavin
()
Ответ на: комментарий от halyavin

> Grapher'ом и Surfer'ом пользуюсь постоянно. Жду не дождусь когда MathGL станет столь же удобным и наконец-то можно будет о них забыть.

А чего ему не хватает?

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

>А чего ему не хватает?

Графического интерфейса? :) Если у кого есть желание допилить graph, который я писал для курсовой год назад, милости просим http://sourceforge.net/projects/graphplot

lester_dev ★★★★★
()
Ответ на: комментарий от halyavin

> Grapher'ом и Surfer'ом пользуюсь постоянно.

Видел эти поделия, правда довольно давно. Удивительно неудобные построители графиков. Вообще не понимаю как ими можно пользоваться при анализе данных.

Evgueni ★★★★★
()

Повторюсь снова: MathGL и gnuplot есть великолепно _дополняющие_ друг друга замечательные инструменты. Есть некоторая область применения, где они пересекаются, есть -- где совершенно не конкуренты друг другу. Я это уже озвучивал в обсуждении предыдущей версии сабжа.

Из того, чего мне не хватает в MathGL для активного использования: это в первую очередь нормального PostScript (то что есть - это откровенный convert file.bmp file.eps со всеми недостатками этого метода); во вторую, конечно, уже блажь :) но мне было бы удобно иметь gnuplot-подобный скриптовый язык :)

Const
()
Ответ на: комментарий от Evgueni

>> Grapher'ом и Surfer'ом пользуюсь постоянно.

> Видел эти поделия, правда довольно давно. Удивительно неудобные построители графиков. Вообще не понимаю как ими можно пользоваться при анализе данных.

Я ими даже пользовался, будучи зелёным аспирантом. Пока gnuplot не освоил :)

Const
()

Автору MathGL большое человеческое спасибо :)

Demon37 ★★★★
()

Надо будет глянуть как-нибудь. Авторам и того, и другого - спасибо :)

JackYF ★★★★
()

Библиотека неплохая, но для построения графикоф на экране непригодная из-за низкой скорости работы и бешеного потребления памяти. Вот генерировать красивые картинки, возможно, самое оно будет.

P.S. gnuplot - тот ещё отстой.

anonymous
()
Ответ на: комментарий от anonymous

>> квазиоптикой

> А это что такое? "Как бы оптика"? :))

Это среднее между волновой оптикой и геометрической -- когда эффекты дифракции, дисперсии и пр. уже важны, но все размеры еще велики в сравнении с длиной волны.

abalakin ★★
() автор топика
Ответ на: комментарий от Devix

> А можно в ней рисовать множество треугольных плоскостей в пространстве?

Легко

abalakin ★★
() автор топика
Ответ на: комментарий от anonymous

> Библиотека неплохая, но для построения графикоф на экране непригодная из-за низкой скорости работы и бешеного потребления памяти. Вот генерировать красивые картинки, возможно, самое оно будет.

Потребление памяти не бешеное -- размер массивов данных + размер картинки*8 (из-за ZBuffer) + размер шрифтов (около 10 МБ). Размер картинки можно сократить если использовать mglGraphPS. При этом возрастет скорость, но пропадет интерполяция цвета/освещения.

Медленность скорее всего связана с версией 1.6.* когда шрифты грузились с диска при каждом создании экземпляра класса mglGraph (и производных). Использование статических/глобальных переменных эту проблему решало (почему я ее и не заметил сразу). В версии 1.7 исправлено (есть один статический шрифт, который грузится один раз и потом копируется в остальные классы). Загрузка с диска происходит только при явном указании внешнего файла.

abalakin ★★
() автор топика
Ответ на: комментарий от anonymous

> А почему QT4? Было ведь вроде fltk? В чем причина перехода?

Причина в отсутствии Юникода, печати и копирования картинок в FLTK. Выбор именно Qt связан со скоростью компиляции и доступностью библиотек для доп. элементов (сетки, подсветки синтаксиса и пр.) во всех версиях. Вначале был Qt3 -- версия более быстрая чем Qt4. Но из-за переносимости (под виндой есть только Qt4) переполз на Qt4 :(. Вообще-то из-за этого и несколько ляпов (не критичных) осталось неисправленными (интерфейс 3-ей и 4-ой версий здорово разный, даже в мелочах:( ). В пакетах deb, RPM их уже не будет, а win версию видимо придется обновлять вскоре :(.

abalakin ★★
() автор топика
Ответ на: комментарий от abalakin

> Потребление памяти не бешеное -- размер массивов данных + размер картинки*8 (из-за ZBuffer) + размер шрифтов (около 10 МБ)

В полноэкранном режиме получается что-то вроде 50 метров или больше. Это много. А время тратится в основном на заполнение этих 50 метров нулями :)

anonymous
()
Ответ на: комментарий от Const

> Из того, чего мне не хватает в MathGL для активного использования: это в первую очередь нормального PostScript (то что есть - это откровенный convert file.bmp file.eps со всеми недостатками этого метода); во вторую, конечно, уже блажь :) но мне было бы удобно иметь gnuplot-подобный скриптовый язык :)

А что не так с PostScript? Вроде бы линии и грани конвертируются как есть, разве только координаты экранные -- так это дело вкуса.

Или имеется в виду текст представленный треугольниками? В какой-то мере это ограничение почти принципиальное -- я не знаю другого способа нарисовать букву наполовину закрытую поверхностью. Хотя можно сделать и сохранение в нормальный текст ... если очень надо?!?

Про gnuplot я уже писал несколько раз, что базовая концепция разная... и языки разные. Язык Matlab, Scilab в этом плане ближе. Хотя интерфейс можно сделать и к языку типа gnuplot -- с удовольствием его включу :) если кто-нибудь напишет :).

abalakin ★★
() автор топика
Ответ на: комментарий от anonymous

> В полноэкранном режиме получается что-то вроде 50 метров или больше. Это много. А время тратится в основном на заполнение этих 50 метров нулями :)

Полный экран (картинка 1280*800*4 = 4Мб) в результате Zbuffer с картинкой 4*(8+1) = 36Мб, плюс 10Мб шрифты, плюс данные 4*nx*ny (для поверхности). Итого 46Мб + данные действительно дает около 50Мб. Из них "нулями заполняется" только ZBuffer (32 Мб) и только по мере необходимости (функция memset() не считается -- почти мгновенная).

Если мало памяти или не хватает скорости, то надо использовать mglGraphPS -- все тоже самое, но нет ZBuffer (т.е. -32Мб) и нет интерполяции цвета :(.

abalakin ★★
() автор топика
Ответ на: комментарий от Const

Константин, вопрос о nonlinear fitting. Вас устраивает как это сделано или есть пожелания?

abalakin ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.