5.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 Текстовые формулы.

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

Устанавливает одну из предопределенных систем криволинейных координат в зависимости от параметра how:

mglCartesian=0

декартова система (нет преобразования координат, {x,y,z});

mglPolar=1

полярные координаты: {x*cos(y),x*sin(y), z};

mglSpherical=2

сферические координаты: {x*sin(y)*cos(z), x*sin(y)*sin(z), x*cos(y)};

mglParabolic=3

параболические координаты: {x*y, (x*x-y*y)/2, z};

mglParaboloidal=4

Paraboloidal coordinates: {(x*x-y*y)*cos(z)/2, (x*x-y*y)*sin(z)/2, x*y};

mglOblate=5

Oblate coordinates: {cosh(x)*cos(y)*cos(z), cosh(x)*cos(y)*sin(z), sinh(x)*sin(y)};

mglProlate=6

Prolate coordinates: {sinh(x)*sin(y)*cos(z), sinh(x)*sin(y)*sin(z), cosh(x)*cos(y)};

mglElliptic=7

эллиптические координаты: {cosh(x)*cos(y), sinh(x)*sin(y), z};

mglToroidal=8

тороидальные координаты: {sinh(x)*cos(z)/(cosh(x)-cos(y)), sinh(x)*sin(z)/(cosh(x)-cos(y)), sin(y)/(cosh(x)-cos(y))};

mglBispherical=9

бисферические координаты: {sin(y)*cos(z)/(cosh(x)-cos(y)), sin(y)*sin(z)/(cosh(x)-cos(y)), sinh(x)/(cosh(x)-cos(y))};

mglBipolar=10

биполярные координаты: {sinh(x)/(cosh(x)-cos(y)), sin(y)/(cosh(x)-cos(y)), z};

mglLogLog=11

Log-log координаты: {lg(x), lg(y), lg(z)};

mglLogX=12

Log-x координаты: {lg(x), y, z};

mglLogY=13

Log-y координаты: {x, lg(y), 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 нарисует проекции в пирамидальных координатах. Если добавить 8 вместо 4, то текст не будет выводиться на проекциях.

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