Next: , Previous: , Up: MathGL core   [Contents][Index]


5.4 Матрица преобразования

Эти функции контролируют где и как график будет расположен. Существует определенный порядок вызова этих функций для лучшего вида графика. Вначале должны вызываться функции subplot, multiplot или inplot для указания местоположения вывода. После них – функции вращения rotate, shear и aspect. И наконец любые другие функции для рисования графика. Вместо вращения графика можно вызвать функцию columnplot, gridplot, stickplot, shearplot или относительную inplot для расположения графиков в столбец одного над другим без зазора между осями. См. раздел Subplots, для примеров кода и графика.

Команда MGL: subplot nx ny m ['stl'='<>_^' dx=0 dy=0]
Метод класса mglGraph: void SubPlot (int nx, int ny, int m, const char *stl="<>_^", mreal dx=0, mreal dy=0)
Функция С: void mgl_subplot (HMGL gr, int nx, int ny, int m, const char *stl)
Функция С: void mgl_subplot_d (HMGL gr, int nx, int ny, int m, const char *stl, mreal dx, mreal dy)

Помещает последующий вывод в m-ую ячейку сетки размером nx*ny от всего рисунка. Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться первой для создания "подграфика". С эстетической точки зрения не рекомендуется вызывать эту функцию с различными (или не кратными) размерами сетки. Дополнительное место для осей/colorbar резервируется только если строка stl содержит:

Ячейка может быть дополнительно сдвинута относительно своего обычного положения на относительный размер dx, dy. Отмечу, что colorbar может находиться за пределами рисунка если выбран пустой стиль ‘’.

Команда MGL: multiplot nx ny m dx dy ['style'='<>_^' sx sy]
Метод класса mglGraph: void MultiPlot (int nx, int ny, int m, int dx, int dy, const char *stl="<>_^")
Функция С: void mgl_multiplot (HMGL gr, int nx, int ny, int m, int dx, int dy, const char *stl)

Помещает последующий вывод в прямоугольник из dx*dy ячеек, начиная с m-ой ячейки, сетки размером nx*ny от всего рисунка. Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться первой для создания "подграфика". Дополнительное место для осей/colorbar резервируется если строка stl содержит:

Область вывода может быть дополнительно сдвинута относительно своего обычного положения на относительный размер sx, sy.

Команда MGL: inplot x1 x2 y1 y2 [rel=on]
Метод класса mglGraph: void InPlot (mreal x1, mreal x2, mreal y1, mreal y2, bool rel=true)
Функция С: void mgl_inplot (HMGL gr, mreal x1, mreal x2, mreal y1, mreal y2)
Функция С: void mgl_relplot (HMGL gr, mreal x1, mreal x2, mreal y1, mreal y2)

Помещает последующий вывод в прямоугольную область [x1, x2]*[y1, y2] (исходный размер [0,1]*[0,1]). Эта функция позволяет поместить график в произвольную область рисунка. Если параметр rel=true, то используется позиция относительно текущего subplot (или inplot с rel=false). Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться первой для создания "подграфика".

Команда MGL: columnplot num ind [d=0]
Метод класса mglGraph: void ColumnPlot (int num, int ind, mreal d=0)
Функция С: void mgl_columnplot (HMGL gr, int num, int ind)
Функция С: void mgl_columnplot_d (HMGL gr, int num, int ind, mreal d)

Помещает последующий вывод в ind-ую строку столбца из num строк. Положение столбца выбирается относительно последнего вызова subplot (или inplot с rel=false). Параметр d задает дополнительный зазор между строк.

Команда MGL: gridplot nx ny ind [d=0]
Метод класса mglGraph: void GridPlot (int nx, int ny, int ind, mreal d=0)
Функция С: void mgl_gridplot (HMGL gr, int nx, int ny, int ind)
Функция С: void mgl_gridplot_d (HMGL gr, int nx, int ny, int ind, mreal d)

Помещает последующий вывод в ind-ую ячейку таблицы nx*ny. Положение ячейки выбирается относительно последнего вызова subplot (или inplot с rel=false). Параметр d задает дополнительный зазор между ячеек.

Команда MGL: stickplot num ind tet phi
Метод класса mglGraph: void StickPlot (int num, int ind, mreal tet, mreal phi)
Функция С: void mgl_stickplot (HMGL gr, int num, int ind, mreal tet, mreal phi)

Помещает последующий вывод в ind-ую ячейку "бруска" из num ячеек. При этом сам брусок повернут на углы tet, phi. Положение выбирается относительно последнего вызова subplot (или inplot с rel=false).

Команда MGL: shearplot num ind sx sy [xd yd]
Метод класса mglGraph: void ShearPlot (int num, int ind, mreal sx, mreal sy, mreal xd=1, mreal yd=0)
Функция С: void mgl_shearplot (HMGL gr, int num, int ind, mreal sx, mreal sy, mreal xd, mreal yd)

Помещает последующий вывод в ind-ую ячейку "бруска" из num ячеек. При этом сама ячейка скошена на sx, sy. Направление бруска задается переменными xd и yd. Положение выбирается относительно последнего вызова subplot (или inplot с rel=false).

Команда MGL: title 'title' ['stl'='' size=-2]
Метод класса mglGraph: void Title (const char *txt, const char *stl="", mreal size=-2)
Метод класса mglGraph: void Title (const wchar_t *txt, const char *stl="", mreal size=-2)
Функция С: void mgl_title (HMGL gr, const char *txt, const char *stl, mreal size)
Функция С: void mgl_titlew (HMGL gr, const wchar_t *txt, const char *stl, mreal size)

Выводит заголовок title для текущего "подграфика" шрифтом stl с размером size. Если строка stl содержит ‘#’, то рисуется обрамляющий прямоугольник. Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться сразу после создания "подграфика".

Команда MGL: rotate tetx tetz [tety=0]
Метод класса mglGraph: void Rotate (mreal TetX, mreal TetZ, mreal TetY=0)
Функция С: void mgl_rotate (HMGL gr, mreal TetX, mreal TetZ, mreal TetY)

Вращает систему координат относительно осей {x, z, y} последовательно на углы TetX, TetZ, TetY.

Команда MGL: rotate tet x y z
Метод класса mglGraph: void RotateN (mreal Tet, mreal x, mreal y, mreal z)
Функция С: void mgl_rotate_vector (HMGL gr, mreal Tet, mreal x, mreal y, mreal z)

Вращает систему координат относительно вектора {x, y, z} на угол Tet.

Команда MGL: shear sx sy
Метод класса mglGraph: void Shear (mreal sx, mreal sy)
Функция С: void mgl_shear (HMGL gr, mreal sx, mreal sy)

Сдвигает (скашивает) систему координат на значения sx, sy.

Команда MGL: aspect ax ay [az=1]
Метод класса mglGraph: void Aspect (mreal Ax, mreal Ay, mreal Az=1)
Функция С: void mgl_aspect (HMGL gr, mreal Ax, mreal Ay, mreal Az)

Устанавливает соотношение размеров осей в отношении Ax:Ay:Az. Для лучшего вида следует вызывать после функции rotate. Если Ax=NAN, то функция выберет оптимальное соотношение размеров, чтобы шаг по осям x-y был одинаков. При этом, Ay задает фактор пропорциональности шага (обычно 1), или указывает на его автоматический выбор при Ay=NAN.

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

Помещает матрицу преобразования в стек. Позднее вы можете восстановить текущее состояние с помощью функции Pop().

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

Заменяет (восстанавливает) матрицу преобразования на последнюю помещенную в стек матрицу.

Метод класса mglGraph: void SetPlotFactor (mreal val)
Функция С: void mgl_set_plotfactor (HMGL gr, mreal val)

Задает масштаб картинки. Не рекомендуется устанавливать значения меньше 1.5. Это аналог функции Zoom(), но применяется только к конкретному подграфику. Используйте ноль для включения автоматического масштабирования.

Также есть 3 функции, которые управляют перспективой Perspective(), масштабированием Zoom() и вращением View() всего рисунка. Т.е. они действуют как ещё одна матрица трансформации. Они были введены для вращения/приближения графика с помощью мыши. Не рекомендуется вызывать их при рисовании графика.

Команда MGL: perspective val
Метод класса mglGraph: void Perspective (mreal a)
Функция С: void mgl_perspective (HMGL gr, mreal a)

Добавляет (включает) перспективу для графика. Параметр a = Depth/(Depth+dz) \in [0,1). По умолчанию (a=0) перспектива отключена.

Команда MGL: view tetx tetz [tety=0]
Метод класса mglGraph: void View (mreal TetX, mreal TetZ, mreal TetY=0)
Функция С: void mgl_view (HMGL gr, mreal TetX, mreal TetZ, mreal TetY)

Вращает систему координат относительно осей {x, z, y} последовательно на углы TetX, TetZ, TetY. Вращение происходит независимо от rotate. Внимание! эти настройки не могут быть переписаны функцией DefaultPlotParam(). Используйте Zoom(0,0,1,1) для возвращения к виду по умолчанию.

Команда MGL: zoom x1 y1 x2 y2
Метод класса mglGraph: void Zoom (mreal x1, mreal y1, mreal x2, mreal y2)
Функция С: void mgl_set_zoom (HMGL gr, mreal x1, mreal y1, mreal x2, mreal y2)

Масштабирует весь рисунок. После вызова функции текущий график будет очищен и в дальнейшем рисунок будет содержать только область [x1,x2]*[y1,y2] от исходного рисунка. Координаты x1, x2, y1, y2 меняются в диапазоне от 0 до 1. Внимание! эти настройки не могут быть переписаны никакими другими функциями, включая DefaultPlotParam(). Используйте Zoom(0,0,1,1) для возвращения к виду по умолчанию.





Next: , Previous: , Up: MathGL core   [Contents][Index]