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

4.3 Настройки осей координат

Эти функции управляет видом и масштабом осей координат. Перед построением для каждой точки выполняются 3 преобразования: сначала определяется возможность рисования точки (см. Обрезание), далее применяются формулы перехода к криволинейным координатам и наконец точка отображается.


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

4.3.1 Масштаб осей координат

Команда MGL: xrange v1 v2
Команда MGL: yrange v1 v2
Команда MGL: zrange v1 v2
Команда MGL: crange v1 v2
Метод класса mglGraph: void SetRange (char dir, mreal v1, mreal v2)
Функция С: void mgl_set_range_val (HMGL gr, char dir, mreal v1, mreal v2)

Задает диапазон изменения ‘x’-,‘y’-,‘z’-,‘c’-координат. См. также ranges.

Команда MGL: xrange dat [add=off]
Команда MGL: yrange dat [add=off]
Команда MGL: zrange dat [add=off]
Команда MGL: crange dat [add=off]
Метод класса mglGraph: void SetRange (char dir, const mglDataA &dat, bool add=false)
Функция С: void mgl_set_range_dat (HMGL gr, char dir, const HCDT a, int add)

Задает диапазон изменения ‘x’-,‘y’-,‘z’-,‘c’-координат как минимальное и максимальное значение массива dat. Параметр add=on указывает добавлять новый диапазон к существующему (не заменять его).

Команда MGL: ranges x1 x2 y1 y2 [z1=0 z2=0]
Метод класса mglGraph: void SetRanges (mglPoint p1, mglPoint p2)
Метод класса mglGraph: void SetRanges (mreal x1, mreal x2, mreal y1, mreal y2, mreal z1=0, mreal z2=0)
Функция С: void mgl_set_ranges (HMGL gr, mreal x1, mreal x2, mreal y1, mreal y2, mreal z1, mreal z2)

Задает диапазон изменения координат. Если минимальное и максимальное значение координаты равны, то они игнорируются по данному направлению. Также устанавливает размер цветовой шкалы, аналогично команде crange z1 z2. Начальные диапазоны равны [-1, 1].

Метод класса mglGraph: void SetRanges (const mglDataA &xx, const mglDataA &yy)
Метод класса mglGraph: void SetRanges (const mglDataA &xx, const mglDataA &yy, const mglDataA &zz)
Метод класса mglGraph: void SetRanges (const mglDataA &xx, const mglDataA &yy, const mglDataA &zz, const mglDataA &cc)

Задает диапазон изменения ‘x’-,‘y’-,‘z’-,‘c’-координат как минимальное и максимальное значение массивов xx, yy, zz, cc соответственно.

Метод класса mglGraph: void SetAutoRanges (mglPoint p1, mglPoint p2)
Метод класса mglGraph: void SetAutoRanges (double x1, double x2, double y1, double y2, double z1=0, double z2=0, double c1=0, double c2=0)
Функция С: void mgl_set_auto_ranges (HMGL gr, double x1, double x2, double y1, double y2, double z1, double z2, double z1, double z2)

Задает диапазон изменения координат для автоматических переменных. Если минимальное и максимальное значение координаты равны, то они игнорируются по данному направлению.

Команда MGL: origin x0 y0 [z0=nan]
Метод класса mglGraph: void SetOrigin (mglPoint p0)
Метод класса mglGraph: void SetOrigin (mreal x0, mreal y0, mreal z0=NAN)
Функция С: void mgl_set_origin (HMGL gr, mreal x0, mreal y0, mreal z0)

Задает центр пересечения осей координат. Если одно из значений равно NAN, то MathGL попытается выбрать оптимальное положение осей координат по этому направлению.

Команда MGL: zoomaxis x1 x2
Команда MGL: zoomaxis x1 y1 x2 y2
Команда MGL: zoomaxis x1 y1 z1 x2 y2 z2
Команда MGL: zoomaxis x1 y1 z1 c1 x2 y2 z2 c2
Метод класса mglGraph: void ZoomAxis (mglPoint p1, mglPoint p2)
Функция С: void mgl_zoom_axis (HMGL gr, mreal x1, mreal y1, mreal z1, mreal c1, mreal x2, mreal y2, mreal z2, mreal c2)

Дополнительно расширяет диапазон осей координат, задаваемый функциями SetRange или SetRanges, в соответствии с формулами min += (max-min)*p1 и max += (max-min)*p1 (или min *= (max/min)^p1 и max *= (max/min)^p1 для "логарифмических" диапазонов, когда inf>max/min>100 или 0<max/min<0.01). Начальные значения [0, 1]. Внимание! эти настройки не могут быть переписаны никакими другими функциями, включая DefaultPlotParam().


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

4.3.2 Криволинейные координаты

Команда MGL: axis 'fx' 'fy' ['fz'='' 'fa'='']
Метод класса mglGraph: void SetFunc (const char *EqX, const char *EqY, const char *EqZ="", const char *EqA="")
Функция С: void mgl_set_func (HMGL gr, const char *EqX, const char *EqY, const char *EqZ, const char *EqA)

Задает формулы перехода к криволинейным координатам. Каждая строка является математическим выражением, зависящим от старых координат ‘x’, ‘y’, ‘z’ и ‘a’ или ‘c’ для цветовой шкалы. Например, для цилиндрических координат будет SetFunc("x*cos(y)", "x*sin(y)", "z");. Для удаления формул соответствующий параметр должен быть пустым или NULL. Использование формул преобразования слегка замедляет программу. Параметр EqA задает аналогичную формулу для цветовой шкалы. See section Текстовые формулы.

Команда MGL: axis how
Метод класса mglGraph: void SetCoor (int how)
Функция С: void mgl_set_coor (HMGL gr, int how)

Устанавливает одну из предопределенных систем криволинейных координат в зависимости от параметра how: mglCartesian=0 – декартова система (нет преобразования координат, наиболее быстрая); mglPolar=1 – полярные координаты x_n=x*cos(y),y_n=x*sin(y), z_n=z; mglSpherical=2 – сферические координаты x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y); mglParabolic=3 – параболические координаты x_n=x*y, y_n=(x*x-y*y)/2, z_n=z; mglParaboloidal=4 – Paraboloidal coordinates x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y; mglOblate=5 – Oblate coordinates x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y); mglProlate=6 – Prolate coordinates x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y); mglElliptic=7 – эллиптические координаты x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z; mglToroidal=8 – тороидальные координаты x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)), y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y)); mglBispherical=9 – бисферические координаты x_n=sin(y)*cos(z)/(cosh(x)-cos(y)), y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y)); mglBipolar=10 – биполярные координаты x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z; mglLogLog=11 – log-log координаты x_n=lg(x), y_n=lg(y), z_n=lg(z); mglLogX=12 – log-x координаты x_n=lg(x), y_n=y, z_n=z; mglLogY=13 – log-y координаты x_n=x, y_n=lg(y), z_n=z.

Команда MGL: ternary val
Метод класса mglGraph: void Ternary (int tern)
Функция С: void mgl_set_ternary (HMGL gr, int tern)

Задает рисование треугольных (Ternary, tern=1), пирамидальных (Quaternary, tern=2) осей координат и проекций осей координат (tern=4,5,6).

Ternary – специальный тип графика для 3 зависимых координат (компонент) a, b, c таких, что a+b+c=1. MathGL использует только 2 независимые координаты a=x и b=y поскольку их достаточно для построения всех графиков. При этом третья координата z является независимым параметром для построения линий уровня, поверхностей и т.д.

Соответственно Quaternary координаты – 4 зависимые координаты a, b, c и d, такие что a+b+c+d=1. MathGL использует только 2 независимые координаты a=x, b=y и d=z поскольку их достаточно для построения всех графиков.

Проекции строятся если к переменной tern добавить число 4. Так что tern=4 нарисует проекции в декартовых координатах, tern=5 нарисует проекции в треугольных координатах, tern=6 нарисует проекции в пирамидальных координатах.

Используйте Ternary(0) для возвращения к привычным координатам. См. раздел Ternary axis, для примеров кода и графика. См. раздел Axis projection, для примеров кода и графика.


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

4.3.3 Метки осей

Команда MGL: adjust ['dir'='xyzc']
Метод класса mglGraph: void Adjust (const char *dir="xyzc")
Функция С: void mgl_adjust_ticks (HMGL gr, const char *dir)

Автоматически задает шаг меток осей, число подметок и начальное положение меток для осей координат dir в виде наиболее удобном для человека. Также задает SetTuneTicks(true). Обычно не требуется вызывать эту функцию кроме случая возвращения настроек по умолчанию.

Команда MGL: xtick val [sub=0 org=nan]
Команда MGL: ytick val [sub=0 org=nan]
Команда MGL: ztick val [sub=0 org=nan]
Команда MGL: ctick val [sub=0 org=nan]
Метод класса mglGraph: void SetTicks (char dir, mreal d=0, int ns=0, mreal org=NAN)
Функция С: void mgl_set_ticks (HMGL gr, char dir, mreal d, int ns, mreal org)

Задает шаг меток осей d, число подметок ns и начальное положение меток org для оси вдоль направления dir (используйте ’c’ для меток colorbar). Переменная d задает шаг меток (если положительна) или их число на оси (если отрицательна). Нулевое значение задает автоматическую расстановку меток. Если org=NAN, то используется значение из переменной Org.

Команда MGL: xtick val1 'lbl1' [val2 'lbl2' ...]
Команда MGL: ytick val1 'lbl1' [val2 'lbl2' ...]
Команда MGL: ztick val1 'lbl1' [val2 'lbl2' ...]
Метод класса mglGraph: void SetTicksVal (char dir, const char *lbl, bool add=false)
Метод класса mglGraph: void SetTicksVal (char dir, const wchar_t *lbl, bool add=false)
Метод класса mglGraph: void SetTicksVal (char dir, const mglDataA &val, const char *lbl, bool add=false)
Метод класса mglGraph: void SetTicksVal (char dir, const mglDataA &val, const wchar_t *lbl, bool add=false)
Функция С: void mgl_set_ticks_str (HMGL gr, char dir, const char *lbl, bool add)
Функция С: void mgl_set_ticks_wcs (HMGL gr, char dir, const wchar_t *lbl, bool add)
Функция С: void mgl_set_ticks_val (HMGL gr, char dir, HCDT val, const char *lbl, bool add)
Функция С: void mgl_set_ticks_valw (HMGL gr, char dir, HCDT val, const wchar_t *lbl, bool add)

Задает явное положение val и подписи lbl для меток вдоль оси dir. Если массив val не указан, то используются значения равно распределённые в интервале [Min.x, Max.x]. Метки разделяются символом ‘\n’. Используйте SetTicks() для восстановления автоматических меток.

Команда MGL: xtick 'templ'
Команда MGL: ytick 'templ'
Команда MGL: ztick 'templ'
Команда MGL: ctick 'templ'
Метод класса mglGraph: void SetTickTempl (char dir, const char *templ)
Метод класса mglGraph: void SetTickTempl (char dir, const wchar_t *templ)
Функция С: void mgl_set_tick_templ (HMGL gr, const char *templ)
Функция С: void mgl_set_tick_templw (HMGL gr, const wchar_t *templ)

Задает шаблон templ для меток вдоль x-,y-,z-оси или colorbar. Шаблон может содержать и символы TeX. Если templ="", то используется шаблон по умолчанию (в простейшем случае ‘%.2g’). Установка шаблона выключает автоматическое улучшение вида меток.

Команда MGL: ticktime 'dir' [dv 'tmpl']
Метод класса mglGraph: void SetTicksTime (char dir, mreal val, const char *templ)
Функция С: void mgl_set_ticks_time (HMGL gr, mreal val, const char *templ)

Задает метки времени с шагом val и шаблоном templ для меток вдоль x-,y-,z-оси или colorbar. Шаблон может содержать и символы TeX. Формат шаблона templ такой же как http://www.manpagez.com/man/3/strftime/. Наиболее употребительные варианты: ‘%X’ для национального представления времени, ‘%x’ для национального представления даты, ‘%Y’ для года с цифрами столетия. Если val=0 и/или templ="", то используется автоматическая расстановка меток и/или выбор шаблона. Вы можете использовать функцию mgl_get_time() для получения числа секунд с 1970 года до указанной даты/времени. Отмечу, что MS Visual Studio не может обрабатывать даты до 1970.

Функция С: double mgl_get_time (const char*str, const char *templ)

Возвращает число секунд с 1970 года до даты/времени, указанной в строке str. Формат строки задается templ, такой же как http://www.manpagez.com/man/3/strftime/. Наиболее употребительные варианты: ‘%X’ для национального представления времени, ‘%x’ для национального представления даты, ‘%Y’ для года с цифрами столетия. Отмечу, что MS Visual Studio не может обрабатывать даты до 1970.

Команда MGL: tuneticks val [pos=1.15]
Метод класса mglGraph: void SetTuneTicks (int tune, mreal pos=1.15)
Функция С: void mgl_tune_ticks (HMGL gr, int tune, mreal pos)

Включает/выключает улучшение вида меток осей путем вынесения общего множителя (для маленьких, типа 0.001...0.002, или больших, типа 1000...2000, значений координат) или общей компоненты (для узкого диапазона, типа 0.999...1.000). Также задает положение pos общего множителя на оси: =0 около минимального значения, =1 около максимального значения.

Команда MGL: tickshift dx [dy=0 dz=0 dc=0]
Метод класса mglGraph: void SetTickShift (mglPoint d)
Функция С: void mgl_set_tick_shift (HMGL gr, mreal dx, mreal dy, mreal dz, mreal dc)

Задает значение дополнительного сдвига меток осей координат.

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

Включает/выключает поворот меток если их число или длина меток слишком велики.

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

Включает/выключает пропуск меток если их число или длина меток слишком велики.

Метод класса mglGraph: void SetTimeUTC (bool val)

Разрешает/запрещает использование UTC времени в метках осей координат. В C/Fortran следует использовать mgl_set_flag(gr,val, MGL_USE_GMTIME);.

Команда MGL: origintick val
Метод класса mglGraph: void SetOriginTick (bool val=true)

Разрешает/запрещает рисование меток в точке пересечения осей координат. В C/Fortran следует использовать mgl_set_flag(gr,val, MGL_NO_ORIGIN);.

Команда MGL: ticklen val [stt=1]
Метод класса mglGraph: void SetTickLen (mreal val, mreal stt=1)
Функция С: void mgl_set_tick_len (HMGL gr, mreal val, mreal stt)

Задает относительную длину меток осей координат. Значение по умолчанию 0.1. Параметр stt>0 задает относительную длину подметок, которые в sqrt(1+stt) раз меньше.

Команда MGL: axisstl 'stl' ['tck'='' 'sub'='']
Метод класса mglGraph: void SetAxisStl (const char *stl="k", const char *tck=0, const char *sub=0)
Функция С: void mgl_set_axis_stl (HMGL gr, const char *stl, const char *tck, const char *sub)

Задает стиль осей (stl), меток (tck) и подметок (sub) осей координат. Если stl пустая или ноль, то используется стиль по умолчанию (‘k’ или ‘w’ в зависимости от типа прозрачности). Если tck, sub пустая или ноль, то используется стиль осей (т.е. stl).


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

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