вторник, 15 декабря 2009 г.

Пример минимального сеанса работы с gnuplot

Рассмотрим создание двухмерного графика.
Пусть у нас текстовый файл из трех колонок чисел output.dat. В первой и второй колонках - аргументы функции, в третей - ее значение. Визуализируем эти данные. Есть тонкость - колонки "разделены" пустыми строками на блоки, в которых один из аргументов должен иметь постоянное значение. Рассматриваем случай, когда аргументы есть равномерная сетка точек на поверхности.
Заходим из командной оболочки в каталог с этим файлом. Привожу минимальный список команд - пополнять и редактировать можно на любой вкус:
#gnuplot
gnuplot> splot 'output.dat' using 1:2:3 w l
gnuplot> set grid
gnuplot> set contour base
gnuplot> set pm
gnuplot> set cntrparam levels 100
gnuplot> set cntrparam levels discret -100,100,150
gnuplot> set xrange [100: 200]
gnuplot> set yrange [200: 300]
gnuplot> key outside
gnuplot> set key off

Цифры даны для примера.
Вывод можно делать и в файл. Возьмем тип postscript:
gnuplot> set term postscript
gnuplot> set out 'picture.ps'
Вернем вывод на консоль:
gnuplot> set out x11
gnuplot> set term x11

Еще немного полезных команд:
gnuplot> set view map
gnuplot> set surface no
gnuplot> unset surface

Хорошая ссылка по теме на русском языке.

пятница, 11 декабря 2009 г.

Использование portdowngrade

Инсталлируем portdowngrade:
#cd /usr/ports/sysutils/portdowngrade
#make DEFAULT_CVS_SERVER=\”:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs\” install clean
Можно выбрать другой сервер, по желанию.
Используем:
#portdowngrade portname
Заметим, что portdowngrade изменяет только порты, а не само программное обеспечение. Поэтому необходимы следующие шаги:
#portsdb -Uu
#portupgrade -f portname

четверг, 3 декабря 2009 г.

Минимальный набор функций OpenGL для освещения сцены

Освещение сцены OpenGL необходимо не только для ее собственно освещения, но без реализации освещения сцена не будет восприниматься как трехмерная. Приведем минимальный набор функций для релизации этой возможности:
1)По умолчанию машина OpenGL находиться в состоянии с выключенным освещением. Включим его:
glEnable(GL_LIGHTING);
2)Но это только "состояние" этой машины. Нужно теперь "включить" источник света. Он может быть не один. На каждый - своя команда:
glEnable(GL_LIGHT0);
3)Кроме просто включить, надо еще установить свойства каждого источника света:
glLightfv(GL_LIGHT0, GL_POSITION, l0_pos);
glLightfv(GL_LIGHT0, GL_DIFFUSE , l0_dif);
Первый параметр указывает источник, второй - свойство, третий - значение свойства. Этих двух параметров достаточно для "минимальной" функциональности.
А вообще параметров целое множество:
а)Параметры GL_SPOT_EXPONENT,GL_SPOT_CUTOFF,GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION устанавливаются функциями glLightf() и glLighti().
б)Параметры GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR,GL_POSITION, GL_SPOT_CUTOFF, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT,GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION утанавливаются функциями glLightfv() или glLightiv()
4)Свойства есть не только у света, но и у материала, который освещаеться:
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, par_mat);Первый параметр функции определяет сторону материала, для которой задаются свойства, второй задает свойство, третий - его значение.