LINUX.ORG.RU

Вышла библиотека MathGL 2.0

 , , , ,


0

2

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

В новой версии значительно увеличена скорость рисования, унифицирован интерфейс, добавлены новые типы графиков и примитивов, добавлен экспорт в 3d форматы (OBJ, PRC, OFF, ...) и LaTeX, множество более мелких улучшений.

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

★★

Проверено: Shaman007 ()

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

Скорее для этого надо бы написать набор скриптов в самой Octave (наподобие приведённого выше).

С выводом в gnuplot так и сделано, plot в octave представляет собой несколько скриптов для работы с gnuplot-специфичными вещами.

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

И документации по использовании mathgl в октаве нет вообще. А функции там отличаются от обычных mathgl'ных.

Как это? В версии 2.* используется 2 унифицированных интерфейса: (1) для С/Фортрана; и (2) для всех классов. Последний используется и для всех swig-based интерфейсов, включая octave. Собственно это причина, почему нет отдельных примеров для питона/октаве и пр. — см. http://mathgl.sourceforge.net/doc_en/mathgl_en_8.html#Examples

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

Ммм, а как иначе хранить настройки графика и всю информацию о массивах?

В каких-нибудь внутренних переменных, как делает octave при работе с гнуплотом.

Тут есть ещё один момент — в существующем варианте легко рисовать в несколько разных графиков/окон одновременно. Если же сделать глобальную переменную типа mglGraph, то такая возможность пропадет.

Хм, в принципе - да.

Но вот с передачей данных и настройками неудобство. Хотя, я, конечно, понимаю, что это всего лишь начало. Чем могу, когда время будет, помогу. Документацию бы какую (т.к. в octave функции даже аргументы другие имеют, нежели в том же питоне, для которого функции документированы).

И справку по help расширить бы: для многих функций ее просто нет.

Кстати, а вот этот вариант http://mathgl.sourceforge.net/doc_en/mathgl_en_12.html#Animation с окошками работает?

Что-то не получается. Вот такое

function animate_MGL(m)
	gr = m.mglGraph();
	w = m.mglWindow();
	dat = m.mglData(100);
	gr.StartGIF("sample.gif");
	gr.ShowImage('feh');
	for i = 1:40
		gr.NewFrame();
		gr.Box();
		for j = 0:dat.nx
			dat.SetVal(sin(pi*j/dat.nx+pi*0.05*i), j);
		endfor
		gr.Plot(dat,"b");
		gr.EndFrame();
		w.Update();
	endfor
	gr.CloseGIF();
	gr.ShowImage('feh');
	gr.WriteGIF("ss.gif");
	gr.WritePNG("ss.png");
endfunction
не работает - пишет в файл статику, на экране показывает только первую картинку и падает..

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

не работает - пишет в файл статику, на экране показывает только первую картинку и падает..

Жаль, надо будет разобраться почему — вся идея была «отцепить» рисование в окно от интерпретатора (октаве) за счёт потоков.

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

Но вот с передачей данных и настройками неудобство. Хотя, я, конечно, понимаю, что это всего лишь начало. Чем могу, когда время будет, помогу. Документацию бы какую (т.к. в octave функции даже аргументы другие имеют, нежели в том же питоне, для которого функции документированы).

Где документированы именно для питона? Документация в версии 2.* тоже единая для всех языков. Например, http://mathgl.sourceforge.net/doc_en/mathgl_en_140.html#g_t1D-plotting

И справку по help расширить бы: для многих функций ее просто нет.

Для каких?

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

Для каких?

Точно не припомню. А еще справочные материалы крайне скудны: говорится о типах параметров, но зачем они нужны и что делает функция - не говорится.

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

Документацию (pdf файл) скачал уже не помню откуда (написано - для версии 1.8, автор - вы). Есть там разделы «C interface», «Python interface»… В файле 422 страницы, оформлен в латехе довольно прилично, с содержаниями и предметным указателем.

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

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

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

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

Это документация в самом octave? Она генерится swig'ом и менять её довольно тяжело.

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

PDF документация собирается тоже из TeXinfo файлов (можно и для последней версии скачать http://downloads.sourceforge.net/mathgl/mathgl-2.0.eng.pdf).

В версии 1.* действительно был отдельный интерфейс для swig-based (python/octave/..). Сейчас он унифицирован с С++.

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

С анимацией так и не справился: постоянные сегфолты.

Если окно не пошло нормально работать, то так и будет... К сожалению, полноценные callback функции swig не поддерживает, а мои «заплатки» и обходные пути не сработали :(.

Но хотя бы GIF должен нормально создаваться.

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

Но хотя бы GIF должен нормально создаваться.

Не хочет.

Да, насчет типов данных: в octave mathgl не позволяет работать с массивами:

octave:4> X.Set([1:10])
error: No matching function for overload
А справка говорит
 -- Loadable Function: Set (SELF, D)
     SELF is of type mglData. D is of type std::vector<(double)>.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от dinn

Не пробовал, хоть оно у меня и установлено.

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