Эти функции контролируют где и как график будет расположен. Существует определенный порядок вызова этих функций для лучшего вида графика. Вначале должны вызываться функции subplot, multiplot или inplot для указания местоположения вывода. После них – функции вращения rotate, shear и aspect. И наконец любые другие функции для рисования графика. Вместо вращения графика можно вызвать функцию columnplot, gridplot, stickplot, shearplot или относительную inplot для расположения графиков в столбец одного над другим без зазора между осями. См. раздел Subplots, для примеров кода и графика.
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 может находиться за пределами рисунка если выбран пустой стиль ‘’.
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.
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
). Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться первой для создания "подграфика".
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 задает дополнительный зазор между строк.
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 задает дополнительный зазор между ячеек.
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
).
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
).
'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 содержит ‘#’, то рисуется обрамляющий прямоугольник. Функция сбрасывает матрицу трансформации (повороты и сжатие графика) и должна вызываться сразу после создания "подграфика". Следует отметить, что каждый последующий вызов команды резервирует дополнительное место. Поэтому следует вручную вызвать subplot после rasterize если требуется совместить растровые и векторные куски графика.
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.
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.
sx sy
¶mglGraph
: void
Shear (mreal
sx, mreal
sy)
¶void
mgl_shear (HMGL
gr, mreal
sx, mreal
sy)
¶Сдвигает (скашивает) систему координат на значения sx, sy.
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()
всего рисунка. Т.е. они действуют как ещё одна матрица трансформации. Они были введены для вращения/приближения графика с помощью мыши. Не рекомендуется вызывать их при рисовании графика.
val
¶mglGraph
: void
Perspective (mreal
a)
¶void
mgl_perspective (HMGL
gr, mreal
a)
¶Добавляет (включает) перспективу для графика. Параметр a = Depth/(Depth+dz) \in [0,1). По умолчанию (a=0
) перспектива отключена.
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)
для возвращения к виду по умолчанию.
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)
для возвращения к виду по умолчанию.