[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5 Экспорт рисунка

Функции в этой группе сохраняют или дают доступ к полученному рисунку. Поэтом обычно они должны вызываться в конце рисования.

Команда MGL: setsize w h
Метод класса mglGraph: void SetSize (int width, int height)
Функция С: void mgl_set_size (HMGL gr, int width, int height)

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

Команда MGL: quality [val=2]
Метод класса mglGraph: void SetQuality (int val=MGL_DRAW_NORM)
Функция С: void mgl_set_quality (HMGL gr, int val)

Задает качество графика в зависимости от значения val: MGL_DRAW_WIRE=0 – нет рисования граней (наиболее быстрый), MGL_DRAW_FAST=1 – нет интерполяции цвета (быстрый), MGL_DRAW_NORM=2 – высокое качество (нормальный), MGL_DRAW_HIGH=3 – высокое качество с рисованием 3d примитивов (стрелок и маркеров). Если установлен бит MGL_DRAW_LMEM=0x4, то происходит прямое рисование в растровое изображение (меньше затраты памяти).

Метод класса mglGraph: int GetQuality ()
Функция С: void mgl_get_quality (HMGL gr)

Возвращает качество графика: MGL_DRAW_WIRE=0 – нет рисования граней (наиболее быстрый), MGL_DRAW_FAST=1 – нет интерполяции цвета (быстрый), MGL_DRAW_NORM=2 – высокое качество (нормальный), MGL_DRAW_HIGH=3 – высокое качество с рисованием 3d примитивов (стрелок и маркеров). Если установлен бит MGL_DRAW_LMEM=0x4, то происходит прямое рисование в растровое изображение (меньше затраты памяти).

Метод класса mglGraph: void StartGroup (const char *name)
Функция С: void mgl_start_group (HMGL gr, const char *name)

Начинает определение группы. Группа может содержать объекты и другие группы. Они используются для выбора части модели при приближении, изменении прозрачности и т.д.

Метод класса mglGraph: void EndGroup ()
Функция С: void mgl_end_group (HMGL gr)

Завершает определение группы.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.1 Экспорт в файл

Эти функции экспортируют текущую картинку (кадр) в файл. Имя файла fname должно иметь соответствующее расширение. Параметр descr дает краткое описание картинки. Пока прозрачность поддерживается только для форматов PNG, SVG, OBJ и PRC.

Команда MGL: write ['fname'='']
Метод класса mglGraph: void WriteFrame (const char *fname="", const char *descr="")
Функция С: void mgl_write_frame (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в файл fname с типом, определяемым по расширению. Параметр descr добавляет описание (может быть пустым). Если fname пустой, то используется имя ‘frame####.jpg’, где ‘####’ – текущий номер кадра и имя ‘frame’ определяется переменной plotid.

Метод класса mglGraph: void WritePNG (const char *fname, const char *descr="", int compr="", bool alpha=true)
Функция С: void mgl_write_png (HMGL gr, const char *fname, const char *descr)
Функция С: void mgl_write_png_solid (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в PNG файл. Параметры функции следующие: fname – имя файла, descr – описание файла, alpha – прозрачность фона. Если при компиляции MathGL не был определен флаг HAVE_PNG, то экспорт в файл не производится.

Метод класса mglGraph: void WriteJPEG (const char *fname, const char *descr="")
Функция С: void mgl_write_jpg (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в JPEG файл. Параметры функции следующие: fname – имя файла, descr – описание файла. Если при компиляции MathGL не был определен флаг HAVE_JPEG, то экспорт в файл не производится.

Метод класса mglGraph: void WriteGIF (const char *fname, const char *descr="")
Функция С: void mgl_write_gif (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в GIF файл. Параметры функции следующие: fname – имя файла, descr – описание файла. Если при компиляции MathGL не был определен флаг HAVE_GIF, то экспорт в файл не производится.

Метод класса mglGraph: void WriteBMP (const char *fname, const char *descr="")
Функция С: void mgl_write_bmp (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в BMP файл. Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void WriteTGA (const char *fname, const char *descr="")
Функция С: void mgl_write_tga (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в TGA файл. Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void WriteEPS (const char *fname, const char *descr="")
Функция С: void mgl_write_eps (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в EPS файл, используя векторное представление графика. Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла. Если имя файла оканчивается на ‘z’ (например, ‘fname.eps.gz’), то файл автоматически архивируется в формате gzip.

Метод класса mglGraph: void WriteBPS (const char *fname, const char *descr="")
Функция С: void mgl_write_eps (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в EPS файл, используя растровое представление графика. Параметры функции следующие: fname – имя файла, descr – описание файла. Если имя файла оканчивается на ‘z’ (например, ‘fname.eps.gz’), то файл автоматически архивируется в формате gzip.

Метод класса mglGraph: void WriteSVG (const char *fname, const char *descr="")
Функция С: void mgl_write_svg (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в SVG файл, используя векторное представление графика. Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла. Если имя файла оканчивается на ‘z’ (например, ‘fname.svgz’), то файл автоматически архивируется в формате gzip.

Метод класса mglGraph: void WriteTEX (const char *fname, const char *descr="")
Функция С: void mgl_write_tex (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в LaTeX файл (пакет Tikz/PGF), используя векторное представление графика. Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла. Отмечу, что сейчас отсутствует изменение размера текста (например, в subplot), что может приводить к неправильному положению надписей.

Метод класса mglGraph: void WritePRC (const char *fname, const char *descr="", bool make_pdf=true)
Функция С: void mgl_write_prc (HMGL gr, const char *fname, const char *descr, int make_pdf)

Экспортирует текущий кадр в PRC файл, используя векторное представление графика (см. http://en.wikipedia.org/wiki/PRC_%28file_format%29). Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла. Если параметр make_pdf=true и PDF был выбран при конфигурировании MathGL, то также создается соответствующий PDF файл с 3D изображением.

Метод класса mglGraph: void WriteOBJ (const char *fname, const char *descr="")
Функция С: void mgl_write_obj (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в OBJ/MTL файл, используя векторное представление графика (см. OBJ формат). Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void WriteXYZ (const char *fname, const char *descr="")
Функция С: void mgl_write_xyz (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в XYZ/XYZL/XYZF файлы, используя векторное представление графика (см. XYZ формат). Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void WriteSTL (const char *fname, const char *descr="")
Функция С: void mgl_write_stl (HMGL gr, const char *fname, const char *descr)

Экспортирует текущий кадр в STL файл, используя векторное представление графика (см. STL формат). Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void WriteOFF (const char *fname, const char *descr="", bool colored=false)
Функция С: void mgl_write_off (HMGL gr, const char *fname, const char *descr, bool colored)

Экспортирует текущий кадр в OFF файл, используя векторное представление графика (см. OFF формат). Вследствие чего не рекомендуется сохранять большие графики (поверхности, а особенно поверхности уровня) из-за большого размера файла. Хотя никаких внутренних ограничений на размер выходного файла нет. Для них лучше использовать растровый формат (например, PNG или JPEG). Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void ShowImage (const char *viewer, bool nowait=false)
Функция С: void mgl_show_image (const char *viewer, int nowait)

Отображает текущий кадр используя внешнюю программу просмотра viewer. Функция сохраняет картинку во временный файл и вызывает viewer для его отображения. Если nowait=true, то функция возвращает управление немедленно – не ждет пока окно просмотра будет закрыто.

Метод класса mglGraph: void WriteJSON (const char *fname, const char *descr="")
Функция С: void mgl_write_json (HMGL gr, const char *fname, const char *descr)

Экспортирует точки и примитивы в текстовый файл используя JSON format. В дальнейшем этот файл можно загрузить и просмотреть в JavaScript скрипте. Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void ExportMGLD (const char *fname, const char *descr="")
Функция С: void mgl_export_mgld (HMGL gr, const char *fname, const char *descr)

Экспортирует точки и примитивы в файл MGLD format. В дальнейшем этот файл можно загрузить и просмотреть с помощью mglview. Параметры функции следующие: fname – имя файла, descr – описание файла.

Метод класса mglGraph: void ImportMGLD (const char *fname, bool add=false)
Функция С: void mgl_import_mgld (HMGL gr, const char *fname, int add)

Импортирует точки и примитивы из файла в MGLD format. Параметры функции следующие: fname – имя файла, add – флаг добавления или замены существующих точек и примитивов.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.2 Кадры/Анимация

Эти функции позволяют создавать несколько картинок одновременно. В большинстве случаев это бесполезно, но для органов управления (см. “Оконные” классы) это позволяет показывать анимацию. Также можно записать несколько кадров в анимированный GIF файл.

Метод класса mglGraph: void NewFrame ()
Функция С: void mgl_new_frame (HMGL gr)

Создает новый кадр. Функция возвращает номер текущего кадра. В режиме OpenGL функция не должны вызываться в параллельных потоках! – используйте прямое создание списка. Функция EndFrame() должна быть вызвана после рисования кадра для каждого вызова этой функции.

Метод класса mglGraph: void EndFrame ()
Функция С: void mgl_end_frame (HMGL gr)

Завершает рисование кадра.

Метод класса mglGraph: int GetNumFrame ()
Функция С: int mgl_get_num_frame (HMGL gr)

Возвращает число созданных кадров.

Метод класса mglGraph: void GetFrame (int i)
Функция С: void mgl_get_frame (HMGL gr, int i)

Завершает рисование кадра и сохраняет объекты рисования в кадр с номером i, который должен быть в диапазоне [0, GetNumFrame()-1]. Функция аналогична EndFrame(), но не добавляет кадр в GIF изображение.

Метод класса mglGraph: void GetFrame (int i)
Функция С: void mgl_get_frame (HMGL gr, int i)

Заменяет объекты рисования на объекты из кадра с номером i. Функция работает если установлен флаг MGL_VECT_FRAME (по умолчанию).

Метод класса mglGraph: void ShowFrame (int i)
Функция С: void mgl_show_frame (HMGL gr, int i)

Добавляет объекты рисования из кадра с номером i к уже существующим. Функция работает если установлен флаг MGL_VECT_FRAME (по умолчанию).

Метод класса mglGraph: void DelFrame (int i)
Функция С: void mgl_del_frame (HMGL gr, int i)

Удаляет объекты рисования для кадра с номером i и сдвигает нумерацию всех последующих кадров. Функция работает если установлен флаг MGL_VECT_FRAME (по умолчанию).

Метод класса mglGraph: void ResetFrames ()
Функция С: void mgl_reset_frames (HMGL gr)

Сбрасывает счетчик кадров в 0.

Метод класса mglGraph: void StartGIF (const char *fname, int ms=100)
Функция С: void mgl_start_gif (HMGL gr, const char *fname, int ms)

Начинает запись кадров в анимированный GIF файл fname. Параметр ms задает задержку между кадрами в миллисекундах. Вы не должны менять размер рисунка во время создания кино. Используйте CloseGIF() для завершения записи. Эта функция не работает в режиме OpenGL.

Метод класса mglGraph: void CloseGIF ()
Функция С: void mgl_close_gif (HMGL gr)

Завершает запись анимированного GIF файла.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.3 Рисование в памяти

Эти функции возвращают созданный растровый рисунок, его ширину и высоту. В дальнейшем его можно использовать в любой графической библиотеке (см. также, “Оконные” классы) или сохранить в файл (см. также, Экспорт в файл).

Метод класса mglGraph: const unsigned char * GetRGB ()
Метод класса mglGraph: void GetRGB (char *buf, int size)
Метод класса mglGraph: void GetBGRN (char *buf, int size)
Функция С: const unsigned char * mgl_get_rgb (HMGL gr)

Возвращает растровое изображение в формате RGB для текущего кадра. Формат каждого элемента (пикселя): {red, green, blue}. Число элементов Width*Height. Положение элемента {i,j} есть [3*i + 3*Width*j] (или [4*i + 4*Width*j] для GetBGRN()). В Python вы должны предоставить буфер buf достаточного размера size, т.е. код должен выглядеть следующим образом (для Python)

from mathgl import *
gr = mglGraph();
bits='\t';
bits=bits.expandtabs(4*gr.GetWidth()*gr.GetHeight());
gr.GetBGRN(bits, len(bits));
Метод класса mglGraph: const unsigned char * GetRGBA ()
Метод класса mglGraph: void GetRGBA (char *buf, int size)
Функция С: const unsigned char * mgl_get_rgba (HMGL gr)

Возвращает растровое изображение в формате RGBA для текущего кадра. Формат каждого элемента (пикселя): {red, green, blue, alpha}. Число элементов Width*Height. Положение элемента {i,j} есть [4*i + 4*Width*j].

Метод класса mglGraph: int GetWidth ()
Метод класса mglGraph: int GetHeight ()
Функция С: int mgl_get_width (HMGL gr)
Функция С: int mgl_get_height (HMGL gr)

Возвращает ширину и высоту изображения.

Метод класса mglGraph: mglPoint CalcXYZ (int xs, int ys)
Функция С: void mgl_calc_xyz (HMGL gr, int xs, int ys, mreal *x, mreal *y, mreal *z)

Вычисляет 3D координаты {x,y,z} для экранной точки {xs,ys}. В данный момент игнорируется перспектива графика и формулы перехода в криволинейные координаты. Вычисления производятся для последнего использованного InPlot (см. Матрица преобразования).

Метод класса mglGraph: mglPoint CalcScr (mglPoint p)
Функция С: void mgl_calc_scr (HMGL gr, mreal x, mreal y, mreal z, int *xs, int *ys)

Вычисляет экранные координаты {xs,ys} для 3D координат {x,y,z}. Вычисления производятся для последнего использованного InPlot (см. Матрица преобразования).

Метод класса mglGraph: void SetObjId (int id)
Функция С: void mgl_set_obj_id (HMGL gr, int id)

Задает числовой идентификатор для объектов или subplot/inplot.

Метод класса mglGraph: int GetObjId (int xs, int ys)
Функция С: int mgl_get_obj_id (HMGL gr, int xs, int ys)

Возвращает числовой идентификатор верхнего объекта в точке {xs, ys} рисунка.

Метод класса mglGraph: int GetSplId (int xs, int ys)
Функция С: int mgl_get_spl_id (HMGL gr, int xs, int ys)

Возвращает числовой идентификатор верхнего "подграфика" в точке {xs, ys} рисунка.

Метод класса mglGraph: void Highlight (int id)
Функция С: void mgl_highlight (HMGL gr, int id)

Выделяет объект с заданным id.

Метод класса mglGraph: long IsActive (int xs, int ys, int d=1)
Функция С: long mgl_is_active (HMGL gr, int xs, int ys, int d)

Проверяет близка ли точка {xs, ys} к активной точке (т.е. mglBase::Act) с точностью d и возвращает индекс активной точки или -1 если не найдено. Активные точки – специальные точки, которые характеризуют примитивы (например, вершины). Это функция только для опытных пользователей.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.4 Распараллеливание

Многие функции MathGL используют несколько потоков для ускорения работы (если MathGL была собрана с поддержкой pthread). При этом можно настраивать число используемых потоков.

Функция С: int mgl_set_num_thr (int n)

Задает число потоков, которое будет использовано в MathGL. При n<1 число потоков задается как максимальное число процессоров (ядер) в системе. При n=1 не используется распараллеливание.

Другая возможность – комбинирование изображений из разных объектов mglGraph. Эти методы наиболее подходят для компьютерных кластеров, когда данные настолько велики, что не могут поместиться в памяти отдельного компьютера.

Метод класса mglGraph: int Combine (const mglGraph *g)
Функция С: int mgl_combine_gr (HMGL gr, HMGL g)

Комбинирует (добавляет) рисунок из g с gr, принимая во внимание “высоту” пикселей. Ширина и высота обоих рисунков должна быть одинаковы.

Метод класса mglGraph: int MPI_Send (int id)
Функция С: int mgl_mpi_send (HMGL gr, int id)

Посылает рисунок из компьютера (ноды) id, используя MPI. Ширина и высота обоих рисунков должна быть одинаковы.

Метод класса mglGraph: int MPI_Recv (int id)
Функция С: int mgl_mpi_send (HMGL gr, int id)

Принимает рисунок из компьютера (ноды) id, используя MPI. Ширина и высота обоих рисунков должна быть одинаковы.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Autobuild on September 28, 2013 using texi2html 1.82.