LINUX.ORG.RU

lisp-рисуем графики


0

0

Доброго времени суток.

Делается система ввода и отображения данных из девайса, на CL. Как удобнее рисовать графики? Особенность состоит в том, что график зависит от времени и к нему постепенно дорисовываются новые точки. После того, как t дошло "до конца экрана", нужно перелистнуть. Gnuplot, в принципе, решает проблему, но на всякий случай интересуюсь - есть ли что-нибудь более прикольное (прикольность надо понимать в широком смысле слова - это может быть простота, отсутствие перерисовки графика при добавлении новых точек, большая близость к лиспу)?

Желательно, чтобы решение было кроссплатформенным: Windows/Lispworks - Linux/SBCL

И ещё (чтобы два раза не вставать). Я пользуюсь подсистемой port из clocc. Там (proc.lisp) есть возможность переносимо создавать нити (или процессы) внутри лиспа, но функционал - довольно убогий. Например, в lispworks есть функция "получить блокировку с таймаутом", а в port таймаут не поддерживается. Также не поддерживается двунаправленный канал с запускаемым процессом.

★★★★★

>Желательно, чтобы решение было кроссплатформенным: Windows/Lispworks - Linux/SBCL

Варианты:

1. LTK. Настолько кроссплатформенен, насколько кроссплатформенен Tk.

2. Может быть, Cells/Tk подойдет. Я вот только не знаю, на каких реализациях и ОС он умеет работать. http://www.tilton-technology.com/Celtk.html

Есть еще вариант cells-gtk.

3. Я бы не стал с пеной у рта защищать третий вариант, но все-таки это вариант. McCLIM для SBCL и CLIM для Lispworks (вроде бы он имеется там -- http://www.lispworks.com/products/clim.html). Хотя фраза оттуда меня смущает:

Note: CLIM is provided primarily to support legacy applications. Users requiring native look and feel in their applications should consider as an alternative the CAPI.

Этот CAPI только для LW и больше нигде его не существует. А насколько нормально работает CLIM в LW, я сказать не могу, увы. То есть этот вариант больше для экспериментов на будущее, чтобы уяснить, что такое CLIM. Плюс в том, что эти реализации придерживаются одной спецификации CLIM 2.0.

Если тебе надо коммерческое решение, то я бы советовал обратить внимание на первый вариант, так как работа с Tk идет через сокет, то есть доступность в любой реализации CL. Второй вариант рассматривать уже следом можно, так как там работа через биндинг.

Zubok ★★★★★
()

> Желательно, чтобы решение было кроссплатформенным

Боюсь опять показаться ретроградом, но ИМХО тут самое оно -- осилить PostScript и написать свою рисовалку (я так делал несколько раз). Она будет в высшей степени переносима и без глюков (надеюсь). Это _очень_ просто (за стандарт не надо денег платить), и lisp прямо-таки заточен на подобные вещи.

Gnuplot -- средоточие глюков. Им невозможно пользоваться без Большого Напильника, меняющегоя от версии к версии.

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

Спасибо всем за ответы!

Буду думать. Пока что мне не нужен GUI, нужен только график, к-рый может висеть отдельным приложением. Свою рисовалку писать не хочу, хотя этот путь кажется мне правильным почему-то, а Gnuplot и раньше не вызывал большого доверия. MathGL выглядит очень красиво, но я не увидел среди фич возможности дорисовывать график по ходу дела. Она там есть? Кстати, тот же вопрос - и для postscript.

В gnuplot есть хотя бы команда replot.

Написать свой port - это нереально (посмотрите на исходный port и станет ясно). Cells/Tk, как я понял, вообще ещё не существует?

А так, вообще-то я буду смотреть в сторону LTK, когда понадобится гуй.

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

>Cells/Tk, как я понял, вообще ещё не существует?

Откровенно говоря, я точно не знаю. Вроде бы в c.l.l. Kenny Tilton показывал какие-то свои скриншоты, из чего я сделал вывод, что такой инструмент имеется. Но так как я не был заинтересован в нем, то и не искал исходников никогда. Ну если этот тулкит есть только как proof of concept, то тогда его вычеркиваем. :)

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