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

1. Язык MGL

MathGL имеет встроенный скриптовый язык MGL для обработки и отображения данных. Скрипты MGL можно использовать как независимо (программами UDAV, mgl2png, mgl2eps, mgl2svg и пр., see section Утилиты для MGL) так и вызовами библиотеки.

Язык MGL достаточно простой. Каждая строка – отдельная команда. Первое слово – имя команды, а все остальные ее аргументы. Команда может иметь до 1000 аргументов (по крайней мере сейчас). Слова разделяются одно от другого пробелом или символом табуляции. Различий между верхним и нижним индексом нет, т.е. переменные a и A идентичны. Символ ‘#’ начинает комментарий – все символы после него игнорируются до конца строки. Исключением является случай, когда ‘#’ входит в строку. Опции команды указываются после символа ‘;’ (see section Опции команд). Символ ‘:’ начинает новую команду (подобно переводу строки) если он расположен не внутри скобок или строки.

Если строка содержит ссылки на внешние параметры (‘$0’, ‘$1’ ... ‘$9’) или макроопределения (‘$a’, ‘$b’ ... ‘$z’), то текущие значения параметров/макроопределений подставляются в строку вместо ссылки до выполнением команды. Это позволяет использовать один и тот же скрипт при различных входных параметрах командной строки или вводить макроопределения по ходу исполнения команд скрипта.

Аргументы команды могут быть строками, переменными или числами.

Перед первым использованием все переменные должны быть определены с помощью команд, создающих массивы (new, var, list, copy, read, hist, sum и др., see section Создание данных и Создание новых данных).

Команды могут иметь несколько наборов аргументов (например, plot ydat и plot xdat ydat). Все аргументы команды для выбранного набора должны быть указаны, однако часть из них могут иметь значения по умолчанию. Такие аргументы в описании команд будут помещены в квадратные скобки [], например plot ydat ['stl'='' zval=nan]. При этом запись [arg1 arg2 arg3 ...] подразумевает [arg1 [arg2 [arg3 ...]]], т.е. опускать можно только аргументы с конца, если вы согласны с их значениями по умолчанию. Например, plot ydat '' 1 или plot ydat '' правильно, а plot ydat 1 не правильно (аргумент 'stl' пропущен).

Все команды MGL можно разделить на несколько групп. В дальнейшем будет использованы следующие обозначения при описании команд: имя команды выделено жирным, строки заключены в одинарные кавычки ”, переменные выделены курсивом, числа (скаляры) выделены моноширинным шрифтом. Необязательные аргументы будут помещены в квадратные скобки [] и показаны их значения по умолчанию. Подробную информацию о цвете и стиле линий (see section Стиль линий), цветовых схемах (see section Цветовая схема), стиле текста и символах TeX (see section Стиль текста), текстовых формулах (see section Текстовые формулы) можно найти в соответствующих разделах.


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

1.1 Основные принципы

Возможности библиотеки MathGL довольно богаты – число только основных типов графиков превышает 50 видов. Кроме того, есть функции для обработки данных, настройки вида графика и пр. и пр. Тем не менее, я старался придерживаться единого стиля в порядке аргументов функций и способе их “настройки”. В основном все ниже сказанное относится к функциям рисования различных графиков.

Всего основных концепций (базисных идей) четыре:

  1. Все настройки графиков (стиль линий, цветовые схемы поверхностей, стиль и цвет текста) задаются строками. Это обеспечивает: удобство для пользователя – короткую строку легче читать и здесь тяжелее ошибиться, чем в большом списке параметров; переносимость – строки выглядят одинаково на всех платформах и не надо заботиться о типе и числе аргументов.
  2. Все функции имеют “упрощенный” и “продвинутый” варианты. Сделано опять из-за удобства. В “упрощенном” варианте для построения графика нужны только один-два массив(а) данных, которые автоматически равнораспределяются в заданном диапазоне осей координат. В “продвинутой” версии можно не только указать явно диапазон построения графика, но и задать его параметрически. Последнее позволяет легко строить довольно сложные кривые и поверхности. В обоих вариантах функций порядок аргументов стандартен: сначала идут массивы данных, потом необязательный строковый параметр стиля графика, а далее – второстепенные необязательные параметры для более точной настройки графика.
  3. Все элементы рисунков векторные. Изначально библиотека MathGL была ориентированна на работу с научными данными, которые по своей природе векторные (линии, грани, матрицы и т.д.). Поэтому векторность используется во всех рисунках! Причем иногда даже в ущерб производительности (например, при выводе шрифтов). Помимо всего прочего, векторность позволяет легко масштабировать рисунок – измените размер картинки в 2 раза, и рисунок пропорционально растянется.
  4. Новые графики не удаляют уже нарисованное. Этот, в чем-то неожиданный, подход позволяет создавать огромное количество “комбинированных” графиков. Например, поверхность с наложенными линиями уровня строится двумя последовательными вызовами функций рисования поверхности и линий уровня (в любом порядке). И совершенно не надо писать специальную функцию (как в Matlab и некоторых других программах) для рисования этого графика. Примеров таких графиков можно привести множество (см. раздел Hints и сайт программы http://mathgl.sf.net/index.html).

Кроме основных концепций я хотел бы остановиться на нескольких, как оказалось, нетривиальных моментах – способе указания положения графика, осей координат и строковых параметров линий, поверхностей, текста.


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

1.1.1 Оси координат

Представление системы координат в MathGL состоит из двух частей. Вначале координаты нормируются в интервал MinxMax (see section Параметры осей координат). Если флаг Cut установлен, то точки вне интервала отбрасываются, в противном случае, они проецируются на ограничивающий параллелепипед (see section Обрезание). Кроме того, отбрасываются точки внутри границ, определенных переменными CutMinxCutMax и точки, для которых значение функции CutOff() не равно нулю. После этого формулы перехода в криволинейную систему координат SetFunc()применяются к каждой точке. Наконец, точка данных отображается с помощью одной из графических функций.

Величины Max, Min можно изменять вручную. Однако, после этого необходимо вызвать функцию RecalcBorder() для настройки графика. Более удобный и безопасный путь состоит в вызове функций Axis(), SetRanges() и др. В последнем случае функция RecalcBorder() вызывается автоматически. Размеры осей можно задавать и автоматически по минимальному и максимальному значениям массива данных. Для этого предназначены функции XRange(), YRange(), ZRange(). Второй не обязательный аргумент указывает, заменять ли новые значения диапазона изменения оси координат (по умолчанию) или только расширить уже существующий диапазон.

Точка пересечения осей координат задается переменной Org и действует на последующие вызовы функций рисования осей координат и сетки. По умолчанию, если точка пересечения осей координат попадает вне диапазона осей координат, то она проецируется на границу области. Изменить такое поведение можно, задав AutoOrg=false. В случае, если одно из значений Org равно NAN, то соответствующее значение будет выбрано автоматически.

Кроме привычных осей x, y, z есть еще одна ось – цветовая шкала – ось c. Она используется при окрашивании поверхностей и задает границы изменения функции при окрашивании. При вызове Axis() ее границы автоматически устанавливаются равными Min.z и Max.z. Возможно и ручное изменение границ цветового интервала посредством вызова функции CAxis() или изменение границ по заданному массиву CRange(). Используйте Colorbar() для отображения цветовой шкалы.

Вид меток по осям определяется функцией SetTicks() (see section Параметры осей координат). Она имеет 3 аргумента: первый d задает шаг меток (если положительны) или их число (если отрицательны) или логарифмические метки (если равны нулю); второ ns задает число "подметок"; последний определяет начальную точку для меток (по умолчанию это точка пересечения осей). Функция SetTuneTicks включает/выключает выделение общего множителя (большого или малого факторов в диапазоне) для меток осей координат. Наконец, если стандартный вид меток не устраивает пользователя, то их шаблон можно задать явно (можно использовать и ТеХ символы), воспользовавшись функциями SetXTT(), SetYTT(). SetZTT(). SetCTT(). Кроме того, в качестве меток можно вывести произвольный текст использовав функцию SetTicksVal().


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

1.1.2 Стиль линий

Стиль линии задается строкой, которая может содержать символ цвета (‘wkrgbcymhRGBCYMHWlenupqLENUPQ’), тип пунктира (‘-|;:ji’ или пробел), ширину линии (‘0123456789’) и тип маркера (‘o+xsd.^v’ и модификатор ‘#’). Если пропущен цвет или тип пунктира, то используется значение по умолчанию с последним указанным цветом или значение из палитры (для see section 1D графики). По умолчанию палитры содержит следующие цвета: темно серыйH’, синийb’, зеленыйg’, красныйr’, голубойc’, пурпурныйm’, yellowy’, серыйh’, сине-зеленыйl’, небесно-синийn’, оранжевыйq’, желто-зеленыйe’, сине-фиолетовыйu’, фиолетовыйp’.

Символы цвета: ‘k’ -- черный, ‘r’ -- красный, ‘R’ -- темно красный, ‘g’ -- зеленый, ‘G’ -- темно зеленый, ‘b’ -- синий, ‘B’ -- темно синий, ‘c’ -- голубой, ‘C’ -- темно голубой, ‘m’ -- пурпурный, ‘M’ -- темно пурпурный, ‘y’ -- желтый, ‘Y’ -- темно желтый (золотой), ‘h’ -- серый, ‘H’ -- темно серый, ‘w’ -- белый, ‘W’ -- светло серый, ‘l’ -- сине-зеленый, ‘L’ -- темно сине-зеленый, ‘e’ -- желто-зеленый, ‘E’ -- темно желто-зеленый, ‘n’ -- небесно-синий, ‘N’ -- темно небесно-синий, ‘u’ -- сине-фиолетовый, ‘U’ -- темно сине-фиолетовый, ‘p’ -- фиолетовый, ‘P’ -- темно фиолетовый, ‘q’ -- оранжевый, ‘Q’ -- темно оранжевый (коричневый).

Тип пунктира: пробел -- нет линии (для рисования только маркеров), ‘-’ -- сплошная линия (■■■■■■■■■■■■■■■■), ‘|’ -- длинный пунктир (■■■■■■■■□□□□□□□□), ‘;’ -- пунктир (■■■■□□□□■■■■□□□□), ‘=’ -- короткий пунктир (■■□□■■□□■■□□■■□□), ‘:’ -- точки (■□□□■□□□■□□□■□□□), ‘j’ -- пунктир с точками (■■■■■■■□□□□■□□□□), ‘i’ -- мелкий пунктир с точками (■■■□□■□□■■■□□■□□).

Типы маркеров: ‘o’ – окружность, ‘+’ – крест, ‘x’ – косой крест, ‘s’ - квадрат, ‘d’ - ромб, ‘.’ – точка, ‘^’ – треугольник вверх, ‘v’ – треугольник вниз, ‘<’ – треугольник влево, ‘>’ – треугольник вправо, ‘#*’ – знак Y, ‘#+’ – крест в квадрате, ‘#x’ – косой крест в квадрате, ‘#.’ – точка в окружности. Если в строке присутствует символ ‘#’, то используются символы с заполнением.

../png/sample5

Стили линий и маркеров.

На конце и в начале линии можно выводить специальный символ (стрелку), если в строке указать один из символов: ‘A’ – стрелка наружу, ‘V’ – стрелка внутрь, ‘I’ – поперечная черта, ‘K’ – стрелка с чертой, ‘T’ – треугольник, ‘S’ – квадрат, ‘D’ – ромб, ‘O’ – круг, ‘_’ – нет стрелки (по умолчанию). При этом действует следующее правило: первый символ определяет стрелку на конце линии, второй символ – стрелку в начале линии. Например, ‘r-A’ – красная сплошная линия со стрелкой на конце, ‘b|AI’ – синий пунктир со стрелкой на конце и чертой вначале, ‘_O’ – линия с текущим стилем и кружком вначале. Эти стили действуют и при построении графиков (например, 1D графики).

../png/sampled

Стили стрелок.


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

1.1.3 Цветовая схема

Цветовая схема используется для определения цвета поверхностей, линий уровня и пр. Цветовая схема задается строкой s, которая содержит символы цвета (see section Стиль линий) или символы ‘d#:|’. Символ ‘d’ указывает на определение цвета в зависимости от положения точки в пространстве, а не по амплитуде данных. Символ ‘#’ переключает рисование поверхности на сетчатое (для трехмерных поверхностей) или включает рисование сетки на поверхности. Символ ‘|’ отключает интерполяцию цвета в цветовой схеме. Это может быть полезно для “резких” цветов, например, при рисовании матриц. Если в строке встречается символ ‘:’, то он принудительно заканчивает разбор строки для стиля поверхности. После этого символа могут идти описание стиля текста или оси вращения кривой/линий уровня. Цветовая схема может содержать до 32 значений цвета.

В цветовой схеме можно использовать тональные (“подсвеченные”) цвета (не в стиле линий!). Тональный цвет задается двумя символами: первый – обычный цвет, второй – его яркость цифрой. Цифра может быть в диапазоне ‘1’...‘9’. При этом ‘5’ соответствует нормальному цвету, ‘1’ – очень темная версия цвета (почти черный), ‘9’ – очень светлая версия цвета (почти белый). Например цветовая схема может быть ‘b2b7wr7r2’.

../png/colors

Цвета и их идентификаторы.

При определении цвета по амплитуде (наиболее часто используется) окончательный цвет определяется путем линейной интерполяции массива цветов. Массив цветов формируется из цветов, указанных в строке спецификации. Аргумент – амплитуда, нормированная между CminCmax (see section Параметры осей координат). Например, строка из 4 символов ‘bcyr’ соответствует изменению цвета от синего (минимальное значение) через голубой и желтый (промежуточные значения) к красному (максимальное значение). Строка ‘kw’ соответствует изменению цвета от черного (минимальное значение) к белому (максимальное значение). Строка из одного символа (например, ‘g’) соответствует однотонному цвету (в данному случае зеленому).

Есть несколько полезных цветовых схем. Строка ‘kw’ дает обычную серую (черно-белую) схему, когда большие значения светлее. Строка ‘wk’ представляет обратную серую схему, когда большие значения темнее. Строки ‘kRryw’, ‘kGgw’, ‘kBbcw’ представляют собой хорошо известные схемы hot, summer и winter. Строки ‘BbwrR’ и ‘bBkRr’ позволяют рисовать двухцветные фигуры на белом или черном фоне, когда отрицательные значения показаны синим цветом, а положительные – красным. Строка ‘BbcyrR’ дает цветовую схему, близкую к хорошо известной схеме jet.

../png/color_schemes

Наиболее популярные цветовые схемы.

При определении цвета по положению точки в пространстве окончательный цвет определяется по формуле c=x*c[1] + y*c[2] + z*c[3]. Здесь c[1], c[2], c[3] – первые три цвета в цветовом массиве; x, y, z – координаты точки, нормированные на MinxMax. Такой тип определения цвета полезен, например, при построении поверхностей уровня, когда цвет дает представление о положении точки в пространстве.


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

1.1.4 Стиль текста

Стиль текста задается строкой, которая может содержать несколько символов: тип шрифта (‘ribwou’) и/или выравнивания (‘LRC’), а также цвет текста ‘wkrgbcymhRGBCYMHW’ (see section Стиль линий) после символа ‘:’. Например, ‘biC:b’ соответствует жирному курсиву с выравниванием по центру синего цвета.

Начертания шрифта: ‘r’ – прямой шрифт, ‘i’ – курсив, ‘b’ – жирный. По умолчанию используется прямой шрифт. Типы выравнивания текста: ‘L’ – по левому краю (по умолчанию), ‘C’ – по центру, ‘R’ – по правому краю. Дополнительные эффекты шрифта: ‘w’ – контурный, ‘o’ – надчеркнутый, ‘u’ – подчеркнутый.

Синтаксический разбор LaTeX-их команд по умолчанию включен. Это команды смены стиля текста (например, \b для жирного текста): \a или \overline – надчеркивание, \b или \textbf – жирный, \i или \textit – курсив, \r или \textrm – прямой (отменяет стили жирного и курсива), \u или \underline – подчеркнутый, \w или \wire – контурный, \big – большего размера, @ – меньшего размера. Нижний и верхний индексы задаются символами ‘_’ и ‘^’. При этом изменение стиля применяется только к следующему символу или к символам в фигурных скобках {}, которые понимаются как единый блок. Например, сравните строки ‘sin (x^{2^3})’ и ‘sin (x^2^3)’. Можно также менять цвет текста внутри строки с помощью команд #? или \color?, где ‘?’ – символ цвета (see section Стиль линий). Например, слова ‘Blue’ и ‘red’ будут окрашены в соответствующий цвет в строке ‘#b{Blue} and \colorr{red} text’. Большинство функций понимает символ новой строки ‘\n’ и позволяет выводить много строчный текст. Наконец, можно использовать символы с произвольным UTF кодом с помощью команды \utf0x????. Например, \utf0x3b1 даст символ α.

Распознаются также большинство символов TeX и AMSTeX, команды смены стиля текста (\textrm, \textbf, \textit, \textsc, \overline, \underline), акценты (\hat, \tilde, \dot, \ddot, \acute, \check, \grave, \bar, \breve) и корни (\sqrt, \sqrt3, \sqrt4). Полный список содержит около 2000 символов. Отмечу, что первый пробел (пробел, табуляция и пр.) после команды игнорируется, а все остальные пробелы печатаются обычным образом. Например, следующие строки дают одинаковый результат \tilde a: ‘\tilde{a}’; ‘\tilde a’; ‘\tilde{}a’.

В частности, распознаются греческие буквы: α – \alpha, β – \beta, γ – \gamma, δ – \delta, ε – \epsilon, η – \eta, ι – \iota, χ – \chi, κ – \kappa, λ – \lambda, μ – \mu, ν – \nu, o – \o, ω – \omega, ϕ – \phi, π – \pi, ψ – \psi, ρ – \rho, σ – \sigma, θ – \theta, τ – \tau, υ – \upsilon, ξ – \xi, ζ – \zeta, ς – \varsigma, ɛ – \varepsilon, ϑ – \vartheta, φ – \varphi, ϰ – \varkappa; A – \Alpha, B – \Beta, Γ – \Gamma, Δ – \Delta, E – \Epsilon, H – \Eta, I – \Iota, C – \Chi, K – \Kappa, Λ – \Lambda, M – \Mu, N – \Nu, O – \O, Ω – \Omega, Φ – \Phi, Π – \Pi, Ψ – \Psi, R – \Rho, Σ – \Sigma, Θ – \Theta, T – \Tau, Υ – \Upsilon, Ξ – \Xi, Z – \Zeta.

Еще примеры наиболее общеупотребительных TeX-их символов: ∠ – \angle, ⋅ – \cdot, ♣ – \clubsuit, ✓ – \checkmark, ∪ – \cup, ∩ – \cap, ♢ – \diamondsuit, ◇ – \diamond, ÷ – \div, ↓ – \downarrow, † – \dag, ‡ – \ddag, ≡ – \equiv, ∃ – \exists, ⌢ – \frown, ♭ – \flat, ≥ – \ge, ≥ – \geq, ≧ – \geqq, ← – \gets, ♡ – \heartsuit, ∞ – \infty, ∫ – \int, \Int, ℑ – \Im, ♢ – \lozenge, ⟨ – \langle, ≤ – \le, ≤ – \leq, ≦ – \leqq, ← – \leftarrow, ∓ – \mp, ∇ – \nabla, ≠ – \ne, ≠ – \neq, ♮ – \natural, ∮ – \oint, ⊙ – \odot, ⊕ – \oplus, ∂ – \partial, ∥ – \parallel, ⊥ –\perp, ± – \pm, ∝ – \propto, ∏ – \prod, ℜ – \Re, → – \rightarrow, ⟩ – \rangle, ♠ – \spadesuit, ~ – \sim, ⌣ – \smile, ⊂ – \subset, ⊃ – \supset, √ – \sqrt or \surd, § – \S, ♯ – \sharp, ∑ – \sum, × – \times, → – \to, ∴ – \therefore, ↑ – \uparrow, ℘ – \wp.

Размер текста может быть задан явно (если size>0) или относительно базового размера шрифта для рисунка |size|*FontSize при size<0. Значение size=0 указывает, что соответствующая строка выводиться не будет. Базовый размер шрифта измеряется во внутренних единицах. Специальные функции SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN() позволяют задавать его в более “привычных” единицах.


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

1.1.5 Текстовые формулы

MathGL имеет быстрый парсер текстовых формул , понимающий большое число функций и операций. Базовые операции: ‘+’ – сложение, ‘-’ – вычитание, ‘*’ – умножение, ‘/’ – деление, ‘^’ – возведение в целосичленную степень. Также есть логические операции: ‘<’ – истина если if x<y, ‘>’ – истина если x>y, ‘=’ – истина если x=y, ‘&’ – истина если x и y оба не равны нулю, ‘|’ – истина если x или y не нуль. Логические операции имеют наинизший приоритет и возвращают 1 если истина или 0 если ложно.

Базовые функции: ‘sqrt(x)’ – квадратный корень из x, ‘pow(x,y)’ – x в степени y, ‘ln(x)’ – натуральный логарифм x, ‘lg(x)’ – десятичный логарифм x, ‘log(a,x)’ – логарифм по основанию a от x, ‘abs(x)’ – модуль x, ‘sign(x)’ – знак x, ‘mod(x,y)’ – остаток от деления x на y, ‘step(x)’ – ступенчатая функция, ‘int(x)’ – целая часть x, ‘rnd’ – случайное число, ‘pi’ – число π = 3.1415926…

Тригонометрические функции: ‘sin(x)’, ‘cos(x)’, ‘tan(x)’ (или ‘tg(x)’). Обратные тригонометрические функции: ‘asin(x)’, ‘acos(x)’, ‘atan(x)’. Гиперболические функции: ‘sinh(x)’ (или ‘sh(x)’), ‘cosh(x)’ (или ‘ch(x)’), ‘tanh(x)’ (или ‘th(x)’). Обратные гиперболические функции: ‘asinh(x)’, ‘acosh(x)’, ‘atanh(x)’.

Специальные функции: ‘gamma(x)’ – гамма функция Γ(x) = ∫0 tx-1 exp(-t) dt, ‘psi(x)’ – дигамма функция ψ(x) = Γ′(x)/Γ(x) для x≠0, ‘ai(x)’ – Эйри функция Ai(x), ‘bi(x)’ – Эйри функция Bi(x), ‘cl(x)’ – функция Клаузена, ‘li2(x)’ (или ‘dilog(x)’) – дилогарифм Li2(x) = -ℜ∫0xds log(1-s)/s, ‘sinc(x)’ – функция sinc(x) = sin(πx)/(πx) для любых x, ‘zeta(x)’ – зета функция Римана ζ(s) = ∑k=1k-s для s≠1, ‘eta(x)’ – эта функция η(s) = (1 - 21-s)ζ(s) для произвольного s, ‘lp(l,x)’ – полином Лежандра Pl(x), (|x|≤1, l≥0), ‘w0(x)’, ‘w1(x)’ – функции Ламберта W. Функции W(x) определены как решение уравнения: W exp(W) = x.

Экспоненциальные интегралы: ‘ci(x)’ – cos-интеграл Ci(x) = ∫0xdt cos(t)/t, ‘si(x)’ – sin-интеграл Si(x) = ∫0xdt sin(t)/t, ‘erf(x)’ – функция ошибки erf(x) = (2/√π) ∫0xdt exp(-t2) , ‘ei(x)’ – интеграл Ei(x) = -PV(∫-xdt exp(-t)/t) (где PV обозначает главное значение), ‘e1(x)’ – интеграл E1(x) = ℜ∫1dt exp(-xt)/t, ‘e2(x)’ – интеграл E2(x) = ℜ∫1∞dt exp(-xt)/t2, ‘ei3(x)’ – интеграл Ei3(x) = ∫0xdt exp(-t3) для x≥0.

Функции Бесселя: ‘j(nu,x)’ – функция Бесселя первого рода, ‘y(nu,x)’ – функция Бесселя второго рода, ‘i(nu,x)’ – модифицированная функция Бесселя первого рода, ‘k(nu,x)’ – модифицированная функция Бесселя второго рода.

Эллиптические интегралы: ‘ee(k)’ – полный эллиптический интеграл E(k) = E(π/2,k), ‘ek(k)’ – полный эллиптический интеграл K(k) = F(π/2,k), ‘e(phi,k)’ – эллиптический интеграл E(φ,k) = ∫0φdt √(1 - k2sin2(t)), ‘f(phi,k)’ – эллиптический интеграл F(φ,k) = ∫0φdt 1/√(1 - k2sin2(t))

Функции Якоби: ‘sn(u,m)’, ‘cn(u,m)’, ‘dn(u,m)’, ‘sc(u,m)’, ‘sd(u,m)’, ‘ns(u,m)’, ‘cs(u,m)’, ‘cd(u,m)’, ‘nc(u,m)’, ‘ds(u,m)’, ‘dc(u,m)’, ‘nd(u,m)’.

Некоторые из функций могут быть недоступны если флаг NO_GSL был определен при компиляции библиотеки MathGL.

При разборе формул нет различия между верхним и нижним регистром. Если аргумент лежит вне области определения функции, то возвращается NaN.


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

1.2 Настройка графика

Команды в этой группе влияют на вид всего рисунка. Соответственно они должны располагаться перед вызовом функций непосредственно рисующих графики.


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

1.2.1 Прозрачность

Эти команды настраивают тип и степень прозрачности поверхностей. Главной является функция alpha, которая включает/выключает прозрачность для всех графиков, созданных после вызова alpha. Функция alphadef устанавливает величину alpha-канала по умолчанию. Прозрачность можно выключить для отдельного графика с помощью transparent. Наконец, функция transptype задает тип прозрачности. См. раздел Transparent surface – пример использования, для примеров кода и графика.

Команда MGL: alpha [val=on]

Включает/выключает прозрачность для всего рисунка. По умолчанию прозрачность выключена. Используйте transparent off для конкретного графика для выключения прозрачности.

Команда MGL: alphadef val

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

Команда MGL: transparent val

Временно включает/возвращает прозрачность графиков.

Команда MGL: transptype val

Задает тип прозрачности. Обычная прозрачность (‘0’) – "закрытые" объекты видны меньше чем закрывающие. "Стеклянная" прозрачность (‘1’) – закрытые и закрывающие объекты единообразно ослабляют интенсивность света (по RGB каналам). "Ламповая" прозрачность (‘2’) – закрытые и закрывающие объекты являются источниками дополнительного освещения (рекомендую установить alphadef 0.3 или меньше в этом случае). See section Обычная прозрачность, "Стеклянная" прозрачность, "Ламповая" прозрачность.


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

1.2.2 Освещение

Эти функции настраивают освещение графика. Главная функция light включает/выключает освещение графиков построенных после ее вызова. MathGL поддерживает до 10 независимых источников света. Положение, цвет, яркость каждого источника света можно задавать по отдельности. По умолчанию включен только первый (с порядковым номером 0) источник света белого цвета, расположенный сверху.

Команда MGL: light [val=on]

Включает/выключает освещение графика. По умолчанию освещение выключено.

Команда MGL: light n val

Включает/выключает n-ый источник света.

Команда MGL: light n xpos ypos zpos ['col'='w' br=0.5]

Добавляет источник света с номером n в положение {xpos, ypos, zpos} с цветом col и яркостью br, которая должна быть в диапазоне [0,1].

Команда MGL: ambient val

Задает яркость рассеянного освещения. Значение должно быть в диапазоне [0,1].


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

1.2.3 Туман

Команда MGL: fog val [dz=0.25]

Имитирует туман на графике. Туман начинается на относительном расстоянии dz от точки обзора и его плотность растет экспоненциально вглубь по закону ~1-exp(-d*z). Здесь z – нормализованная на 1 глубина графика. Если d=0 то туман отсутствует. См. раздел Surface in fog – пример использования, для примеров кода и графика.


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

1.2.4 Базовые размеры

Эти команды задают величины большинства параметров графика, включая размеры маркеров, стрелок, толщину линий и т.д. Как и любые другие настройки, они подействуют только на графики созданные после изменения настроек.

Команда MGL: barwidth val

Относительный размер прямоугольников в bars, barh, boxplot. Значение по умолчанию 0.7.

Команда MGL: marksize val

Размер маркеров для 1D графики. Значение по умолчанию 1.

Команда MGL: arrowsize val

Размер стрелок для 1D графики, линий и кривых (see section Рисование примитивов). Значение по умолчанию 1.

Команда MGL: linewidth val

Базовая толщина линий. Значения <1 игнорируются. Для значений >1 реальная толщина получается перемножением указанной ширины линии на данное значение. Увеличение ширины линии актуально для больших растровых рисунков. Значение по умолчанию 1.

Команда MGL: ticklen val [stt=1]

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

Команда MGL: tickstl 'stl' ['sub'='']

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


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

1.2.5 Масштабирование

Эти команды управляют масштабированием всего рисунка (zoom) или отдельной картинки (plotfactor). Обычно эти функции используются для удаления пустого места вокруг графиков.

Команда MGL: plotfactor val

Масштаб картинки (значение должно быть больше 1). Не рекомендуется устанавливать значения меньше 1.5. Это аналог zoom, но применяется только к конкретной картинке, заданной inplot. Используйте ноль для включения автоматического масштабирования.

Команда MGL: zoom x1 y1 x2 y2

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


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

1.2.6 Обрезание

Эти команды задают условия когда точка будет исключена (вырезана) из рисования. Замечу, что все точки со значением(-ями) nan по одной из координат или амплитуде автоматически исключаются из рисования.

Команда MGL: cut val

Задает обрезание точек за пределами осей координат. Если on то такие точки исключаются из рисования (это по умолчанию) иначе они проецируются на ограничивающий прямоугольник.

Команда MGL: cut x1 y1 z1 x2 y2 z2

Задает границы параллелепипеда внутри которого точки не рисуются. Если границы одинаковы (переменные равны), то параллелепипеда считается пустым. См. раздел CutMinMax – пример использования, для примеров кода и графика.

Команда MGL: cut 'cond'

Задает условие обрезания по формуле cond. Это условие исключает точки из рисования если результат вычисления формулы не равен нулю. Установите аргумент '' для выключения условия обрезания. См. раздел CutOff – пример использования, для примеров кода и графика.


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

1.2.7 Прочие настройки

Команда MGL: font 'fnt' [val=6]

Задает стиль и размер шрифта (see section Вывод текста). Вначале используется ‘rC’ – прямой шрифт с выравниванием по центру. По умолчанию размер подписей оси координат в 1.4 раза больше.

Команда MGL: rotatetext val

Включает/выключает вращение меток и подписей осей координат вдоль оси. Начальное значение on.

Команда MGL: palette 'colors'

Задает палитру как последовательность цветов. Значение по умолчанию "Hbgrcmyhlnqeup", что соответствует цветам: темно серый ‘H’, синий ‘b’, зеленый ‘g’, красный ‘r’, голубой ‘c’, малиновый ‘m’, желтый ‘y’, серый ‘h’, сине-зеленый ‘l’, небесно-голубой ‘n’, оранжевый ‘q’, желто-зеленый ‘e’, сине-фиолетовый ‘u’, фиолетовый ‘p’. Палитра в основном используется в 1D графиках (see section 1D графики) для кривых с неопределенным стилем линии.

Команда MGL: meshnum num

Задает ориентировочное число линий в mesh, fall, grid, число стрелок (штрихов) в vect, dew и число ячеек в cloud. По умолчанию (=0) рисуются все линии, стрелки, ячейки.

Команда MGL: axialdir 'dir'

Задает ось вращения для axial, torus. По умолчанию это ’z’.


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

1.3 Параметры осей координат

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

Команда MGL: axis x1 y1 x2 y2
Команда MGL: axis x1 y1 z1 x2 y2 z2

Команда MGL: ranges x1 x2 y1 y2 [z1=0 z2=0]

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

Команда MGL: axis 'fx' 'fy' ['fz'='' 'fa'='']

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

Команда MGL: axis how

Устанавливает одну из предопределенных систем криволинейных координат в зависимости от параметра how: ‘0’ – декартова система (нет преобразования координат, наиболее быстрая); ‘1’ – полярные координаты x_n=x*cos(y),y_n=x*sin(y), z_n=z; ‘2’ – сферические координаты x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y); ‘3’ – параболические координаты x_n=x*y, y_n=(x*x-y*y)/2, z_n=z; ‘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; ‘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); ‘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); ‘7’ – эллиптические координаты x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z; ‘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)); ‘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)); ‘10’ – биполярные координаты x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z.

Команда MGL: caxis z1 z2

Задает масштаб цветовой шкалы (c-координаты). Эти значения используются для определения цвета поверхностей и прочих 2D и 3D графиков. Начальный диапазон равен [-1, 1].

Команда MGL: origin x0 y0 [z0=nan]

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

Команда MGL: ternary val

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

Команда MGL: xrange dat [add=off fact=0]

Команда MGL: yrange dat [add=off fact=0]

Команда MGL: zrange dat [add=off fact=0]

Команда MGL: crange dat [add=off fact=0]

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

Команда MGL: xrange x1 x2
Команда MGL: yrange x1 x2
Команда MGL: zrange x1 x2
Команда MGL: crange x1 x2

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

Команда MGL: xtick val [sub=0 org=nan]

Команда MGL: ytick val [sub=0 org=nan]

Команда MGL: ztick val [sub=0 org=nan]

Команда MGL: ctick val

Задает шаг меток осей val, число подметок ns и начальное положение меток org. Переменная val задает шаг меток (если положительна) или их число на оси (если отрицательна). Нулевое значение задает логарифмические метки. Если org=NAN, то используется значение из origin.

Команда MGL: xtick 'templ'
Команда MGL: ytick 'templ'
Команда MGL: ztick 'templ'
Команда MGL: ctick 'templ'

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

Команда MGL: xtick val1 'lbl1' [val2 'lbl2' ...]
Команда MGL: ytick val1 'lbl1' [val2 'lbl2' ...]
Команда MGL: ztick val1 'lbl1' [val2 'lbl2' ...]

Задает явное положение val и подписи lbl для меток вдоль оси. Метки могут содержать и символы TeX.

Команда MGL: adjust ['dir'='xyzc']

Автоматически задает шаг меток осей, число подметок и начальное положение меток для осей координат dir в виде наиболее удобном для человека.


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

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

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

Команда MGL: subplot nx ny m [dx=0 dy=0]

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

Команда MGL: subplot nx ny m 'style'

Аналогично предыдущему, но место для осей/colorbar резервируется только если строка style содержит: ‘L’ или ‘<’ – с левого края, ‘R’ или ‘>’ – с правого края, ‘A’ или ‘^’ – с верхнего края, ‘U’ или ‘_’ – с нижнего края.

Команда MGL: inplot x1 x2 y1 y2 [rel=off]

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

Команда MGL: columnplot num ind [d=0]

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

Команда MGL: stickplot num ind tet phi

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

Команда MGL: rotate tetz tetx [tety=0]

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

Команда MGL: rotate tet x y z

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

Команда MGL: aspect ax ay [az=1]

Устанавливает соотношение размеров осей в отношении ax:ay:az. Для лучшего вида следует вызывать после функции rotate.

Команда MGL: perspective val

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


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

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

Команда MGL: write 'fname' [solid=off]

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

Команда MGL: setsize w h

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


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

1.6 Рисование примитивов

Эти команды рисуют рисуют простые объекты типа линий, точек, сфер, капель, конусов, и т.д.

Команда MGL: clf

Очищает рисунок и заполняет его цветом по умолчанию (обычно белым).

Команда MGL: ball x y ['col'='r']
Команда MGL: ball x y z ['col'='r']

Рисует точку (шарик) с координатами {x, y, z} и цветом col.

Команда MGL: line x1 y1 x2 y2 ['stl'='']
Команда MGL: line x1 y1 z1 x2 y2 z2 ['stl'='']

Рисует геодезическую линию (декартовых координатах – прямую) из точки {x1,y1,z1} в {x2,y2,z2} использую стиль линии stl. Кривая рисуется даже если часть ее лежит вне диапазона осей координат.

Команда MGL: curve x1 y1 dx1 dy1 x2 y2 dx2 dy2 ['stl'='']
Команда MGL: curve x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2 ['stl'='']

Рисует кривую Безье из точки {x1,y1,z1} в {x2,y2,z2} использую стиль линии stl. Касательные в точках пропорциональны {dx1,dy1,dz1}, {dx2,dy2,dz2}. Кривая рисуется даже если часть ее лежит вне диапазона осей координат.

Команда MGL: facex x0 y0 z0 wy wz ['stl'='' d1=0 d2=0]

Команда MGL: facey x0 y0 z0 wx wz ['stl'='' d1=0 d2=0]

Команда MGL: facez x0 y0 z0 wx wy ['stl'='' d1=0 d2=0]

Рисует закрашенный прямоугольник (грань) перпендикулярно оси [x,y,z] в точке {x0, y0, z0} цветом stl и шириной wx, wy, wz вдоль соответствующего направления. При этом цвет может быть один для всей грани, или различным для разных вершин если указаны все 4 цвета (полезно для градиента цвета, например ‘wwrr’). Параметры d1!=0, d2!=0 задают дополнительный сдвиг последней точки (т.е. рисуют четырехугольник). Грань будет нарисована даже если часть ее лежит вне диапазона осей координат.

Команда MGL: sphere x0 y0 r ['col'='r']
Команда MGL: sphere x0 y0 z0 r ['col'='r']

Рисует сферу радиуса r с центром в точке {x, y, z} цветом stl.

Команда MGL: drop x0 y0 dx dy r ['col'='b' sh=1 asp=1]
Команда MGL: drop x0 y0 z0 dx dy dz r ['col'='b' sh=1 asp=1]

Рисует каплю радиуса r в точке {x0,y0,z0} вытянутую вдоль направления {dx,dy,dz} цветом col. Параметр sh определяет степень вытянутости: ‘0’ – сфера, ‘1’ – классическая капля. Параметр asp определяет относительную ширину капли (аналог "эллиптичности" для сферы). См. раздел Drops – пример использования, для примеров кода и графика.

Команда MGL: cone x1 y1 z1 x2 y2 z2 r1 [r2=-1 'stl'='' edge=off]

Рисует трубу (или усеченный конус если edge=off) между точками {x1,y1,z1}, {x2,y2,z2} с радиусами на концах r1, r2. Если r2<0, то полагается r2=r1. Цвет конуса задается строкой stl.

Команда MGL: rect x1 y1 x2 y2 ['st'='']
Команда MGL: rect x1 y1 z1 x2 y2 z2 ['st'='']

Рисует закрашенный прямоугольник (грань) с противоположными вершинами в точках {x1,y1,z1}, {x2,y2,z2} цветом stl. При этом цвет может быть один для всей грани, или различным для разных вершин если указаны все 4 цвета (полезно для градиента цвета, например ‘wwrr’). Грань будет нарисована даже если часть ее лежит вне диапазона осей координат.


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

1.7 Вывод текста

Команды для вывода текста позволяют вывести строку текста в произвольном месте рисунка, в произвольном направлении и вдоль произвольной кривой. Можно использовать произвольное начертание шрифта и многие ТеХ-ие команды (детальнее see section Стиль текста). Аргумент size определяет размер текста: размер шрифта если положителен или относительный размер (=-size*fontsize) если отрицателен.

Параметры шрифта задаются строкой, которая может содержать символы стиля (‘rbiwou’) и/или выравнивания (‘LRC’). Также строка может содержать символы цвета ‘wkrgbcymhRGBCYMHW’ (see section Стиль линий) после символа ‘:’. Стили шрифта: ‘r’ – прямой, ‘i’ – курсив, ‘b’ – жирный, ‘w’ – контурный, ‘o’ – надчеркнутый, ‘u’ – подчеркнутый. По умолчанию используется прямой шрифт. Типы выравнивания: ‘L’ – по левому краю (по умолчанию), ‘C’ – по центру, ‘R’ – по правому краю. Например, строка ‘iC:b’ соответствует курсиву синего цвета с выравниванием по центру. По умолчанию используются параметры, определенные командой font.

Если строка содержит символы ‘aA’, то текст выводится в абсолютных координатах (полагаются в диапазоне [0,1]). При этом используются координаты относительно рисунка (если указано ‘A’) или относительно последнего subplot/inplot (если указано ‘a’).

Команда MGL: text x y 'text' ['fnt'='' size=-1.4]
Команда MGL: text x y z 'text' ['fnt'='' size=-1.4]

Выводит строку text от точки {x,y,z} шрифтом fnt и размером size.

Команда MGL: text x y dx dy 'text' [size=-1.4]
Команда MGL: text x y z dx dy dz 'text' [size=-1.4]

Выводит строку text от точки {x,y,z} вдоль направления {dx,dy,dz} шрифтом fnt и размером size.

Команда MGL: text ydat 'text' ['fnt'='' size=-1 zval=nan]
Команда MGL: text xdat ydat 'text' ['fnt'='' size=-1 zval=nan]
Команда MGL: text xdat ydat zdat 'text' ['fnt'='' size=-1]

Выводит строку text вдоль кривой {xdat[i], ydat[i], zdat[i]} шрифтом font. Строка font может содержать символы: ‘t’ для вывода текста под кривой (по умолчанию), или ‘T’ для вывода текста над кривой. Если массив xdat не указан, то используется массив со значениями равно распределенными вдоль оси x. Если массив zdat не указан, то используется zdat[i] = zval. См. раздел Text – пример использования, для примеров кода и графика.

Команда MGL: title 'text' ['fnt'='' size=-2]

Выводит строку text как заголовок (сверху рисунка). Может использоваться в любом месте (даже внутри subplot).

Команда MGL: fgets x y 'fname' [n=0 'fnt'='' size=-1.4]
Команда MGL: fgets x y z 'fname' [n=0 'fnt'='' size=-1.4]

Выводит n-ую строку файла fname от точки {x,y,z} шрифтом fnt и размером size.


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

1.8 Оси и Colorbar

Эти команды рисуют объекты для "измерения" типа осей координат, цветовой таблицы (colorbar), сетку по осям, обрамляющий параллелепипед и подписи по осям координат. См. также Параметры осей координат.

Команда MGL: axis ['dir'='xyz' adjust=off]

Рисует оси координат и метки на них (see section Параметры осей координат) в направлениях, указанных строкой dir. Если строка содержит символ ‘_’, то подписи меток отображаться не будут. Шрифт подписей определяется командой font. Метки будут "подогнаны" если adjust=on (с помощью вызова adjust 'dir').

Команда MGL: colorbar ['sch'='' pos=0]

Рисует полосу соответствия цвета и числовых значений (colorbar) для цветовой схемы sch (используется текущая для sch='') с краю от графика. Параметр pos задает местоположение: ‘0’ - справа (по умолчанию), ‘1’ - слева, ‘2’ - сверху, ‘3’ - снизу. Если строка sch содержит ‘<>^_’, то параметр pos определяется как: pos=0 для ‘>’ (справа), pos=1 для ‘<’ (слева), pos=2 для ‘^’ (сверху), pos=3 для ‘_’ (снизу). Если строка содержит ‘A’, то используются абсолютные координаты (относительно рисунка). См. раздел Dens – пример использования, для примеров кода и графика.

Команда MGL: colorbar vdat ['sch'='' pos=0]

Аналогично предыдущему, но для цветовой схемы без сглаживания с заданными значениями vdat. См. раздел ContD – пример использования, для примеров кода и графика.

Команда MGL: colorbar 'sch' pos x y w h

Аналогично первому, но в произвольном месте графика {x, y} (полагаются в диапазоне [0,1]). Параметры w, h задают относительную ширину и высоту colorbar.

Команда MGL: grid ['dir'='xyz' 'pen'='B']

Рисует линии сетки в направлениях перпендикулярным dir. Шаг сетки такой же как у меток осей координат. Стиль линий задается параметром pen (по умолчанию – сплошная темно синяя линия ‘B-’).

Команда MGL: box ['stl'='k' ticks=on]

Рисует ограничивающий параллелепипед цветом ’stl’. При ticks=on рисуются метки в соответствии с текущими настройками осей координат axis.

Команда MGL: xlabel 'text' [pos=0 size=-1.4 shift=0]

Команда MGL: ylabel 'text' [pos=0 size=-1.4 shift=0]

Команда MGL: zlabel 'text' [pos=0 size=-1.4 shift=0]

Команда MGL: tlabel 'text' [pos=0 size=-1.4 shift=0]

Выводит подпись text для x-,y-,z-,t-оси (где ‘t’ – “тернарная” ось t=1-x-y). Параметр pos задает положение подписи: при pos=0 – по центру оси, при pos>0 – около максимальных значений, при pos<0 – около минимальных значений. Параметр size задает размер шрифта (по умолчанию в 1.4 раза больше чем у меток). See section Вывод текста.


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

1.9 Легенда

Эти команды обеспечивают рисование легенды графика (полезно для 1D графики). Запись в легенде состоит из двух строк: одна для стиля линии и маркеров, другая с текстом описания (с включенным разбором TeX-их команд), накапливаемые во внутренние массивы с помощью команды addlegend или опции legend. Положение легенды можно задать автоматически или вручную. Параметры font и size задают стиль и размер шрифта. Параметр llen задает относительную ширину примера линии. Ели стиль линии пустой, то соответствующий текст печатается без отступа. Если строка font содержит символ ‘A’, то координаты легенды считаются относительно картинки (а не текущего subplot). См. раздел Legend – пример использования, для примеров кода и графика.

Команда MGL: legend [pos=3 'fnt'='rL' size=-1 llen=0.1]

Рисует легенду из накопленных записей шрифтом fnt размером size. Параметр pos задает положение легенды: ‘0’ – в нижнем левом углу, ‘1’ – нижнем правом углу, ‘2’ – верхнем левом углу, ‘3’ – верхнем правом углу (по умолчанию).

Команда MGL: legend x y ['fnt'='rL' size=-1 llen=0.1]

Рисует легенду из накопленных записей шрифтом font размером size. Положение легенды задается параметрами x, y, которые полагаются нормированными в диапазоне [0,1].

Команда MGL: addlegend 'text' 'stl'

Добавляет описание text кривой со стилем stl (see section Стиль линий) во внутренний массив записей легенды. Максимальное число записей 100.

Команда MGL: clearlegend

Очищает внутренний массив записей легенды.

Команда MGL: legendbox val

Включает/выключает рисование прямоугольника вокруг легенды. По умолчанию (=on) прямоугольник рисуется.

Команда MGL: legendmarks val

Задает число маркеров в легенде. По умолчанию используется 1 маркер.


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

1.10 1D графики

Эти команды строят графики для одномерных (1D) массивов. Одномерными считаются массивы, зависящие только от одного параметра (индекса) подобно кривой в параметрической форме {x(i),y(i),z(i)}, i=1...n. Есть 5 основных типов 1D графиков: линия (plot), линия с заполнением (area), ступеньки (step), прямоугольники (bars, barh) и вертикальные линии (stem). Все эти типы графиков имеют похожий интерфейс. Есть версии для рисования в пространстве и на плоскости. В последнем случае имеется возможность использования только одного массива. Стиль линии и маркеров указывается строковой переменной. Если она равна ''. Кроме того, есть еще несколько типов графиков для одномерных массивов, имеющих другой интерфейс и вид: поверхность вращения кривой (torus), диаграмма (chart), размер ошибки (error), маркеры переменного размера (mark), трубками (tube) и т.д. См. раздел Пример графиков 1D данных, для примеров кода и графика.

График рисуется для каждой строки если один из массивов матрица. Размер по 1-ой координате должен быть одинаков для всех массивов xdat.nx=ydat.nx=zdat.nx. Если массив xdat не указан, то используется массив со значениями равно распределенными вдоль оси x. Если массив zdat не указан, то используется zdat[i] = zval. Строка stl задает цвет и стиль линии и маркеров (see section Стиль линий). По умолчанию (stl='') рисуется сплошная линия с текущим цветом из палитры.

Команда MGL: plot ydat ['stl'='' zval=nan]
Команда MGL: plot xdat ydat ['stl'='' zval=nan]
Команда MGL: plot xdat ydat zdat ['stl'='']

Рисует ломанную линию между точками {x[i], y[i], z[i]}. См. также area, step, stem, tube, mark, error, belt, tens. См. раздел Plot – пример использования, для примеров кода и графика.

Команда MGL: radar adat ['stl'='' r=-1]

Рисует radar chart, представляющий собой ломанную с вершинами на радиальных линиях (типа ломанной в полярных координатах). График рисуется для каждой строки если один из массивов матрица. Параметр r задает дополнительный сдвиг данных (т.е. используется a+r вместо a). Если r<0, то r=max(0, -min(a). Если stl содержит символ ‘#’, то также рисуется "сетка" (радиальные линии и круг для r). См. также plot. См. раздел Radar – пример использования, для примеров кода и графика.

Команда MGL: tens ydat cdat ['stl'='' zval=nan]
Команда MGL: tens xdat ydat cdat ['stl'='' zval=nan]
Команда MGL: tens xdat ydat zdat cdat ['stl'='']

Рисует ломанную линию по точкам {x[i], y[i], z[i]} с цветом, определяемым массивом c[i] (типа графика натяжений). См. также plot, mesh, fall. См. раздел Tens – пример использования, для примеров кода и графика.

Команда MGL: area ydat ['stl'='' zval=nan]
Команда MGL: area xdat ydat ['stl'='' zval=nan]
Команда MGL: area xdat ydat zdat ['stl'='']

Рисует ломанную линию по точками {xdat[i], ydat[i], zdat[i]} и закрашивает ее вниз до плоскости осей координат. Можно использовать градиентное закрашивание если число указанных цветов в stl равно удвоенному числу кривых для построения. Если строка содержит символ ‘a’, то линии рисуются одна поверх другой (с суммированием) – того же эффекта можно достичь вызовом cumsum ydat 'y' перед построением графика. См. также plot, bars, stem, region. См. раздел Area – пример использования, для примеров кода и графика.

Команда MGL: region fdat gdat ['stl'='' inside=off]
Команда MGL: region xdat fdat gdat ['stl'='' inside=off]

Закрашивает область между 2 кривыми {xdat[i], fdat[i]} и {xdat[i], gdat[i]}. При inside=off закрашивается только область y1<y<y2, в противном случае также будет закращена область y2<y<y1. Можно использовать градиентное закрашивание если число указанных цветов stl равно удвоенному числу кривых для построения. См. также area, bars, stem. См. раздел Region – пример использования, для примеров кода и графика.

Команда MGL: stem ydat ['stl'='' zval=nan]
Команда MGL: stem xdat ydat ['stl'='' zval=nan]
Команда MGL: stem xdat ydat zdat ['stl'='']

Рисует вертикальные линии из точек {xdat[i], ydat[i], zdat[i]} до плоскости осей координат. См. также area, bars, plot, mark. См. раздел Stem – пример использования, для примеров кода и графика.

Команда MGL: bars ydat ['stl'='' zval=nan]
Команда MGL: bars xdat ydat ['stl'='' zval=nan]
Команда MGL: bars xdat ydat zdat ['stl'='']

Рисует вертикальные полосы (прямоугольники) из точек {xdat[i], ydat[i], zdat[i]} до плоскости осей координат. Если строка stl содержит символ ‘a’, то линии рисуются одна поверх другой. Если строка содержит символ ‘f’, то рисуется график типа waterfall для определения кумулятивного эффекта последовательности положительных и отрицательных значений. Можно использовать разные цвета для положительных и отрицательных значений если число указанных цветов равно удвоенному числу кривых для построения. См. также barh, area, stem, chart. См. раздел Bars – пример использования, для примеров кода и графика.

Команда MGL: barh xdat ['stl'='' zval=nan]
Команда MGL: barh ydat xdat ['stl'='' zval=nan]

Рисует горизонтальные полосы (прямоугольники) из точек {xdat[i], ydat[i]} до плоскости оси y. Если массив ydat не указан, то используется массив со значениями равно распределенными вдоль оси y. Если строка stl содержит символ ‘a’, то линии рисуются одна поверх другой. Если строка содержит символ ‘f’, то рисуется график типа waterfall для определения кумулятивного эффекта последовательности положительных и отрицательных значений. Можно использовать разные цвета для положительных и отрицательных значений если число указанных цветов равно удвоенному числу кривых для построения. См. также bars. См. раздел Barh – пример использования, для примеров кода и графика.

Команда MGL: chart adat ['col'='']

Рисует цветные полосы (пояса) для массива данных adat. Число полос равно числу строк adat (равно a.ny). Цвет полос поочередно меняется из цветов указанных в col или в палитре (если col=''). Пробел в цветах соответствует прозрачному "цвету", т.е. соответствующая полоса не рисуется. Ширина полосы пропорциональна значению элемента в adat. График строится только для массивов не содержащих отрицательных значений. Если строка col содержит ‘#’, то рисуется также черная граница полос. График выглядит лучше в 3d (после вращения системы координат) и/или в полярной системе координат (становится Pie chart). См. раздел Chart – пример использования, для примеров кода и графика.

Команда MGL: step ydat ['stl'='' zval=nan]
Команда MGL: step xdat ydat ['stl'='' zval=nan]
Команда MGL: step xdat ydat zdat ['stl'='']

Рисует ступеньки для точек массива {xdat[i], ydat[i], zdat[i]}. См. также plot, stem, tile, boxs. См. раздел Step – пример использования, для примеров кода и графика.

Команда MGL: torus zdat ['stl'='']
Команда MGL: torus rdat zdat ['stl'='']

Рисует поверхность вращения кривой {rdat[i], zdat[i], zdat[i]} относительно оси axialdir. Если массив rdat не указан, то используется массив со значениями равно распределенными вдоль оси x. См. также plot, axial. См. раздел Torus – пример использования, для примеров кода и графика.

Команда MGL: tube ydat rdat ['stl'='' zval=nan]
Команда MGL: tube ydat rval ['stl'='' zval=nan]
Команда MGL: tube xdat ydat rdat ['stl'='' zval=nan]
Команда MGL: tube xdat ydat rval ['stl'='' zval=nan]
Команда MGL: tube xdat ydat zdat rdat ['stl'='']
Команда MGL: tube xdat ydat zdat rval ['stl'='']

Рисует трубу радиуса rdat[i] (or rval) вдоль кривой между точками {xdat[i], ydat[i], zdat[i]}. См. также plot. См. раздел Tube – пример использования, для примеров кода и графика.

Команда MGL: mark ydat rdat ['stl'='' zval=nan]
Команда MGL: mark xdat ydat rdat ['stl'='' zval=nan]
Команда MGL: mark xdat ydat zdat rdat ['stl'='']

Рисует маркеры размером rdat[i]*marksize в точках {xdat[i], ydat[i], zdat[i]}. Для рисования маркеров одинакового размера можно использовать функцию plot с невидимой линией (со стилем содержащим ‘ ’). См. также plot, textmark, stem, error. См. раздел Mark – пример использования, для примеров кода и графика.

Команда MGL: textmark ydat 'txt' ['stl'='' zval=nan]
Команда MGL: textmark ydat rdat 'txt' ['stl'='' zval=nan]
Команда MGL: textmark xdat ydat rdat 'txt' ['stl'='' zval=nan]
Команда MGL: textmark xdat ydat zdat rdat 'txt' ['stl'='']

Рисует текст txt как маркер с размером пропорциональным rdat[i]*marksize в точках {xdat[i], ydat[i], zdat[i]}. Если массив rdat не указан, то полагается rdat[i] = 1. См. также plot, mark, stem. См. раздел TextMark – пример использования, для примеров кода и графика.

Команда MGL: error ydat yerr ['stl'='' zval=nan]
Команда MGL: error xdat ydat yerr ['stl'='' zval=nan]
Команда MGL: error xdat ydat xerr yerr ['stl'='' zval=nan]

Рисует размер ошибки {xerr[i], yerr[i]} в точках {xdat[i], ydat[i]} на плоскости z = zval. Такой график полезен для отображения ошибки эксперимента, вычислений и пр. См. также plot. См. раздел Error – пример использования, для примеров кода и графика.

Команда MGL: boxplot adat ['stl'='' zval=nan]
Команда MGL: boxplot xdat adat ['stl'='' zval=nan]

Рисует boxplot (называемый также как box-and-whisker diagram или как "ящик с усами") в точках xdat[i] на плоскости z = zval. Это график, компактно изображающий распределение вероятностей adat[i,j] (минимум, нижний квартиль (Q1), медиана (Q2), верхний квартиль (Q3) и максимум) вдоль второго (j-го) направления. См. также plot, error, bars. См. раздел BoxPlot – пример использования, для примеров кода и графика.


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

1.11 2D графики

Эти команды строят графики для двумерных (2D) массивов. Двумерными считаются массивы, зависящие только от двух параметров (индексов) подобно матрице f(x_i,y_j), i=1...n, j=1...m. Есть несколько основных типов 2D графиков: сплошная поверхность (surf), сетчатая поверхность (mesh), поверхность из ящиков (boxs), поверхность из плиток (tile), водопад (fall), ленточки (belt), график плотности (dens), линии уровня (cont), линии уровня с заполнением (contf) и результат их вращения (axial). В функциях cont, contf и axial значения уровней можно задавать автоматически и вручную. Можно также нарисовать сетку (grid) по массиву данных для улучшения вида графика плотности или линий уровня. Каждый тип графика имеет похожий интерфейс. Есть версия для рисования одного массива с автоматическими координатами и версия для параметрически заданной поверхности. См. раздел Пример графиков 1D данных, для примеров кода и графика.

Строка sch задает цветовую схему (see section Цветовая схема. Предыдущая цветовая схема используется по умолчанию. Младшие размерности массивов xdat, ydat, zdat должны быть одинаковы xdat.nx=zdat.nx && ydat.nx=zdat.ny или xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny. Массивы xdat и ydat могут быть векторами (не матрицами как zdat). Если массивы xdat, ydat не указаны, то используются массивы со значениями равно распределенными вдоль осей x, y. График строится для каждого z среза данных.

Команда MGL: surf zdat ['sch'='']
Команда MGL: surf xdat ydat zdat ['sch'='']

Рисует параметрически заданную поверхность {xdat[i,j], ydat[i,j], zdat[i,j]}. Если sch содержит ‘#’, то на поверхности рисуется сетка. См. также mesh, dens, belt, tile, boxs, surfc, surfa. См. раздел Surf – пример использования, для примеров кода и графика.

Команда MGL: mesh zdat ['sch'='']
Команда MGL: mesh xdat ydat zdat ['sch'='']

Рисует сетчатую поверхность, заданную параметрически {xdat[i,j], ydat[i,j], zdat[i,j]}. См. также surf, fall, meshnum, cont, tens. См. раздел Mesh – пример использования, для примеров кода и графика.

Команда MGL: fall zdat ['sch'='']
Команда MGL: fall xdat ydat zdat ['sch'='']

Рисует водопад для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. График удобен для построения нескольких кривых, сдвинутых вглубь друг относительно друга. Если sch содержит ‘x’, то линии рисуются вдоль x-оси (по умолчанию линии рисуются вдоль y-оси). См. также belt, mesh, tens, meshnum. См. раздел Fall – пример использования, для примеров кода и графика.

Команда MGL: belt zdat ['sch'='']
Команда MGL: belt xdat ydat zdat ['sch'='']

Рисует ленточки для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. Если sch содержит ‘x’, то линии рисуются вдоль x-оси (по умолчанию линии рисуются вдоль y-оси). См. также fall, surf, plot, meshnum. См. раздел Belt – пример использования, для примеров кода и графика.

Команда MGL: boxs zdat ['sch'='']
Команда MGL: boxs xdat ydat zdat ['sch'='']

Рисует вертикальные ящики для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. См. также surf, dens, tile, step. См. раздел Boxs – пример использования, для примеров кода и графика.

Команда MGL: tile zdat ['sch'='']
Команда MGL: tile xdat ydat zdat ['sch'='']

Рисует плитки для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. График может использоваться как 3d обобщение step. См. также surf, boxs, step, tiles. См. раздел Tile – пример использования, для примеров кода и графика.

Команда MGL: dens zdat ['sch'='' zval=nan]
Команда MGL: dens xdat ydat zdat ['sch'='' zval=nan]

Рисует график плотности для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]} при z = zVal. Если sch содержит ‘#’, то рисуется сетка. См. также surf, cont, contf, boxs, tile, dens[xyz]. См. раздел Dens – пример использования, для примеров кода и графика.

Команда MGL: cont vdat zdat ['sch'='' zval=nan]
Команда MGL: cont vdat xdat ydat zdat ['sch'='' zval=nan]

Рисует линии уровня для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]} при z = zval (или при z=vdat[k] если zval==nan). Линии уровня рисуются для z=vdat[k]. Если sch содержит ‘#’, то рисуется сетка. Если sch содержит ‘t’ или ‘T’, то значения vdat[k] будут выведены вдоль контуров над (или под) кривой. См. также dens, contf, contd, axial, cont[xyz]. См. раздел Cont – пример использования, для примеров кода и графика.

Команда MGL: cont zdat ['sch'='' num=7 zval=nan]
Команда MGL: cont xdat ydat zdat ['sch'='' num=7 zval=nan]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: contf vdat zdat ['sch'='' zval=nan]
Команда MGL: contf vdat xdat ydat zdat ['sch'='' zval=nan]

Рисует закрашенные линии (контуры) уровня для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]} при z = zval (или при z=v[k] если zval=nan). Линии уровня рисуются для z=vdat[k]. Если sch содержит ‘#’, то рисуется сетка. См. также dens, cont, contd, contf[xyz]. См. раздел ContF – пример использования, для примеров кода и графика.

Команда MGL: contf zdat ['sch'='' num=7 zval=nan]
Команда MGL: contf xdat ydat zdat ['sch'='' num=7 zval=nan]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: contd vdat zdat ['sch'='' zval=nan]
Команда MGL: contd vdat xdat ydat zdat ['sch'='' zval=nan]

Рисует закрашенные линии (контуры) уровня для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]} при z = zval (или при z=v[k] если zval==nan) цветами заданными явно. Линии уровня рисуются для z=vdat[k]. Строка sch задает цвет контуров: цвет k-го контура определяется символом sch[k%strlen(sch)]. См. также dens, cont, contf, cont[xyz]. См. раздел ContD – пример использования, для примеров кода и графика.

Команда MGL: contd zdat ['sch'='' num=7 zval=nan]
Команда MGL: contd xdat ydat zdat ['sch'='' num=7 zval=nan]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: axial vdat zdat ['sch'='']
Команда MGL: axial vdat xdat ydat zdat ['sch'='']

Рисует поверхность вращения линии уровня для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. Линии уровня рисуются для zdat[i,j]=vdat[k]. Если sch содержит ‘#’, то рисуется сетчатая поверхность. Если строка содержит символы ‘x’, ‘y’ или ‘z’, то ось вращения устанавливается в указанное направление (по умолчанию вдоль оси axialdir). См. также cont, contf, torus, surf3. См. раздел Axial – пример использования, для примеров кода и графика.

Команда MGL: axial zdat ['sch'='' num=3]
Команда MGL: axial xdat ydat zdat ['sch'='' num=3]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: grad pdat ['sch'='' num=5 zval=nan]
Команда MGL: grad xdat ydat pdat ['sch'='' num=5 zval=nan]
Команда MGL: grad xdat ydat zdat pdat ['sch'='' num=5]

Рисует линии градиента скалярного поля pdat заданного параметрически {xdat[i,j], ydat[i,j]} или {xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]}. Число линий пропорционально num. Линии рисуются только с границ интервала при num<0. См. также dens, cont, dens3, cont3, flow. См. раздел Grad – пример использования, для примеров кода и графика.

Команда MGL: grid2 zdat ['sch'='' zval=nan]
Команда MGL: grid2 xdat ydat zdat ['sch'='' zval=nan]

Рисует плоскую сету для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]} при z = zval. См. также dens, cont, contf.


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

1.12 3D графики

Эти функции строят графики для трехмерных (3D) массивов. Трехмерными считаются массивы, зависящие от трех параметров (индексов) подобно матрице f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l. Есть 5 основных типов 3D графиков: поверхность постоянного уровня (surf3), график плотности на срезе (dens3), линии уровня на срезе (cont3), закрашенные контуры уровня на срезе (contf3) и график объемной прозрачности типа облака (cloud). В функциях cont3, contf3 и surf3 значения уровней можно задавать автоматически и вручную. Можно также нарисовать на срезе сетку (grid3) по массиву данных для улучшения вида графика плотности или линий уровня. Каждый тип графика имеет похожий интерфейс. Есть версия для рисования одного массива с автоматическими координатами и версия для параметрически заданного массива. См. раздел Пример графиков 3D данных, для примеров кода и графика.

Строка sch задает цветовую схему (see section Цветовая схема). Предыдущая цветовая схема используется по умолчанию. Массивы x, y, z могут быть векторами (не 3d массивами как a). Если массивы xdat, ydat, zdat не указаны, то используются массивы со значениями равно распределенными вдоль осей x, y, z.

Команда MGL: surf3 adat val ['sch'='']
Команда MGL: surf3 xdat ydat zdat adat val ['sch'='']

Рисует поверхность уровня для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]) при adat(x,y,z)=val. Если sch содержит ‘#’, то рисуется сетчатая поверхность. См. также cloud, dens3, surf3c, surf3a, axial. См. раздел Surf3 – пример использования, для примеров кода и графика.

Команда MGL: surf3 adat ['sch'='' num=5]
Команда MGL: surf3 xdat ydat zdat adat ['sch'='' num=5]

Рисует num поверхностей уровня равномерно распределенных в интервале цветовой шкалы (см. caxis).

Команда MGL: dens3 adat 'dir' [sval=-1 'sch'='']
Команда MGL: dens3 xdat ydat zdat adat 'dir' [sval=-1 'sch'='']

Рисует график плотности для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]). График рисуется на срезе sval в направлении dir={‘x’, ‘y’, ‘z’}. Если stl содержит ‘#’, то на срезе рисуется сетка. См. также cont3, contf3, dens, grid3. См. раздел Dens3 – пример использования, для примеров кода и графика.

Команда MGL: densa adat ['sch'='']
Команда MGL: densa xdat ydat zdat adat ['sch'='']

Рисует графики плотности на всех центральных срезах 3d данных.

Команда MGL: cont3 vdat adat 'dir' [sval=-1 'sch'='']
Команда MGL: cont3 vdat xdat ydat zdat adat 'dir' [sval=-1 'sch'='']

Рисует линии уровня для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]). Линии рисуются для значений из массива v на срезе sval в направлении dir={‘x’, ‘y’, ‘z’}. Если stl содержит ‘#’, то на срезе рисуется сетка. Если sch содержит ‘t’ или ‘T’, то значения vdat[k] будут выведены вдоль контуров над (или под) кривой. См. также dens3, contf3, cont, grid3. См. раздел Cont3 – пример использования, для примеров кода и графика.

Команда MGL: cont3 adat 'dir' [sval=-1 'sch'='' num=7]
Команда MGL: cont3 xdat ydat zdat adat 'dir' [sval=-1 'sch'='' num=7]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: conta adat ['sch'='' num=7]
Команда MGL: conta xdat ydat zdat adat ['sch'='' num=7]

Рисует линии уровня на всех центральных срезах 3d данных.

Команда MGL: contf3 vdat adat 'dir' [sval=-1 'sch'='']
Команда MGL: contf3 vdat xdat ydat zdat adat 'dir' [sval=-1 'sch'='']

Рисует закрашенные линии (контуры) уровня для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]). Линии рисуются для значений из массива v на срезе sval в направлении dir={‘x’, ‘y’, ‘z’}. Если stl содержит ‘#’, то на срезе рисуется сетка. См. также dens3, cont3, contf, grid3. См. раздел ContF3 – пример использования, для примеров кода и графика.

Команда MGL: contf3 adat 'dir' [sval=-1 'sch'='' num=7]
Команда MGL: contf3 xdat ydat zdat adat 'dir' [sval=-1 'sch'='' num=7]

Как предыдущий с вектором v из num элементов равно распределенных в интервале цветовой шкалы (см., caxis).

Команда MGL: contfa adat ['sch'='' num=7]
Команда MGL: contfa xdat ydat zdat adat ['sch'='' num=7]

Рисует закрашенные линии (контуры) уровня на всех центральных срезах 3d данных.

Команда MGL: grid3 adat 'dir' [sval=-1 'sch'='']
Команда MGL: grid3 xdat ydat zdat adat 'dir' [sval=-1 'sch'='']

Рисует сетку для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]). График рисуется на срезе sval в направлении dir={‘x’, ‘y’, ‘z’}. См. также cont3, contf3, dens3, grid2.

Команда MGL: grida adat ['sch'='']
Команда MGL: grida xdat ydat zdat adat ['sch'='']

Рисует сетку на всех центральных срезах 3d данных.

Команда MGL: cloud adat ['sch'='']
Команда MGL: cloud xdat ydat zdat adat ['sch'='']

Рисует облачный график для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]). График состоит из кубиков с цветом и прозрачностью пропорциональной значениям adat. Результат похож на облако – малые значения прозрачны, а большие нет. Число кубиков зависит от meshnum. Параметр alpha меняет общую прозрачность графика. См. также surf3. См. раздел Cloud – пример использования, для примеров кода и графика.

Команда MGL: beam tr g1 g2 adat rval ['sch'='' flag=0 num=3]

Рисует поверхность уровня для 3d массива adat при постоянном значении adat=val. Это специальный тип графика для adat заданного в сопровождающей системе координат вдоль кривой tr с ортами g1, g2 и с поперечным размером rval. Переменная flag – битовый флаг: ‘0x1’ - рисовать в сопровождающих (не лабораторных) координатах; ‘0x2’ - рисовать проекцию на плоскость \rho-z; ‘0x4’ - рисовать нормированное в каждом сечении поле. Размеры массивов по 1-му индексу tr, g1, g2 должны быть nx>2. Размеры массивов по 2-му индексу tr, g1, g2 и размер по 3-му индексу массива adat должны быть одинаковы. См. также surf3.


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

1.13 Парные графики

Эти команды строят графики для двух связанных массивов. Есть несколько основных типов 3D графиков: поверхность и поверхность уровня с окраской по второму массиву (surfc, surf3c), поверхность и поверхность уровня с прозрачностью по второму массиву (surfa, surf3a), плитки переменного размера (tiles), диаграмма точечного отображения (map), STFA диаграмма (stfa). В командах surf3a и surf3c значения уровней можно задавать автоматически и вручную. Каждый тип графика имеет похожий интерфейс. Есть версия для рисования одного массива с автоматическими координатами и версия для параметрически заданного массива.

Строка sch задает цветовую схему (see section Цветовая схема). Предыдущая цветовая схема используется по умолчанию. Массивы x, y, z могут быть векторами (не 3d массивами как a). Если массивы xdat, ydat, zdat не указаны, то используются массивы со значениями равно распределенными вдоль осей x, y, z.

Команда MGL: surfc zdat cdat ['sch'='']
Команда MGL: surfc xdat ydat zdat cdat ['sch'='']

Рисует параметрически заданную поверхность {xdat[i,j], ydat[i,j], zdat[i,j]} с цветом, заданным массивом cdat[i,j]. Если sch содержит ‘#’, то на поверхности рисуется сетка. См. также surf, surfa, surf3c. См. раздел SurfC – пример использования, для примеров кода и графика.

Команда MGL: surf3c adat cdat val ['sch'='']
Команда MGL: surf3c xdat ydat zdat adat cdat val ['sch'='']

Рисует поверхность уровня для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]) при a(x,y,z)=val. Аналогично surf3, но цвет задается массивом cdat. Если sch содержит ‘#’, то рисуется сетчатая поверхность. См. также surf3, surfc, surf3a. См. раздел Surf3C – пример использования, для примеров кода и графика.

Команда MGL: surf3c adat cdat ['sch'='' num=5]
Команда MGL: surf3c xdat ydat zdat adat cdat ['sch'='' num=5]

Рисует num поверхностей уровня равномерно распределенных в интервале цветовой шкалы (см. caxis).

Команда MGL: surfa zdat cdat ['sch'='']
Команда MGL: surfa xdat ydat zdat cdat ['sch'='']

Рисует параметрически заданную поверхность {xdat[i,j], ydat[i,j], zdat[i,j]} с прозрачностью, заданным массивом cdat[i,j]. Если sch содержит ‘#’, то на поверхности рисуется сетка. См. также surf, surfc, surf3a. См. раздел SurfA – пример использования, для примеров кода и графика.

Команда MGL: surf3a adat cdat val ['sch'='']
Команда MGL: surf3a xdat ydat zdat adat cdat val ['sch'='']

Рисует поверхность уровня для 3d массива, заданного параметрически adat[i,j,k](xdat[i,j,k], ydat[i,j,k], zdat[i,j,k]) при a(x,y,z)=val. Аналогично surf3, но прозрачность задается массивом cdat. Если sch содержит ‘#’, то рисуется сетчатая поверхность. См. также surf3, surfa, surf3c. См. раздел Surf3A – пример использования, для примеров кода и графика.

Команда MGL: surf3a adat cdat ['sch'='' num=5]
Команда MGL: surf3a xdat ydat zdat adat cdat ['sch'='' num=5]

Рисует num поверхностей уровня равномерно распределенных в интервале цветовой шкалы (см. caxis).

Команда MGL: tiles zdat rdat ['sch'='']
Команда MGL: tiles xdat ydat zdat rdat ['sch'='']

Рисует плитки для параметрически заданной поверхности {xdat[i,j], ydat[i,j], zdat[i,j]}. Аналогично tile, но размер плиток задается массивов rdat. Это создает эффект "прозрачности" при экспорте в файлы EPS. См. также surfa, tile. См. раздел TileS – пример использования, для примеров кода и графика.

Команда MGL: map udat vdat ['sch'='' pnts=on]
Команда MGL: map xdat ydat udat vdat ['sch'='' pnts=on]

Визуализирует точечное отображение для матриц {udat, vdat } параметрически зависящих от координат xdat, ydat. Исходное положение ячейки задает ее цвет. Высота пропорциональна якобиану Jacobian(udat,vdat). График является аналогом диаграммы Арнольда. Если pnts=off, то рисуются грани, иначе цветные точки рисуются в узлах матриц (полезно для "запутанного" отображения). См. раздел Map – пример использования, для примеров кода и графика.

Команда MGL: stfa re im dn ['sch'='' pnts=on]
Команда MGL: stfa xdat ydat re im dn ['sch'='' pnts=on]

Рисует спектрограмму комплексного массива re+i*im для Фурье размером dn точек. Параметр dn – любое четное число. Например в 1D случае, результатом будет график плотности от массива res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn размером {int(nx/dn), dn, ny}. Массивы re, im параметрически зависят от координат xdat, ydat. См. раздел STFA – пример использования, для примеров кода и графика.


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

1.14 Векторные поля

Эти функции рисуют графики для 2D и 3D векторных полей. Есть несколько типов графиков: просто векторное поле (vect), вектора вдоль траектории (traj), векторное поле каплями (dew), нити тока (flow), трубки тока (pipe). Каждый тип графика имеет похожий интерфейс. Есть версия для рисования одного массива с автоматическими координатами и версия для параметрически заданного массива.

Строка sch задает цветовую схему (see section Цветовая схема). Предыдущая цветовая схема используется по умолчанию. Все размеры массивов ax и ay должны быть одинаковы. Младшие размерности массивов x, y и ax должны быть одинаковы. Массивы x и y могут быть векторами (не матрицами как ax). График строится для каждого z среза ax, ay для 2D случаев.

Команда MGL: traj xdat ydat udat vdat ['sch'='' zval=nan len=0]
Команда MGL: traj xdat ydat zdat udat vdat wdat ['sch'='' len=0]

Рисует вектора {udat, vdat, wdat} вдоль кривой {xdat, ydat, zdat}. Длина векторов пропорциональна \sqrtudat^2+vdat^2+wdat^2. Строка pen задает цвет (see section Стиль линий). По умолчанию (pen=''). Параметр len задает фактор длины векторов (если не нуль) или выбирать длину пропорционально расстоянию между точками кривой (если len=0). См. также vect. См. раздел Traj – пример использования, для примеров кода и графика.

Команда MGL: vect udat vdat ['sch'='' zval=nan flag=0]
Команда MGL: vect xdat ydat udat vdat ['sch'='' zval=nan flag=0]

Рисует векторное поле {udat, vdat} параметрически зависящее от координат xdat, ydat на плоскости при z=zval. Длина и цвет векторов пропорциональна \sqrtax^2+ay^2. Число рисуемых векторов зависит от meshnum. Параметр flag побитовый флаг для настройки вид векторов: 1 – двуцветный вектор, 2 – одинаковая длина векторов, 4 – рисует стрелку в точку сетки, 8 – рисует стрелку с серединой в точке сетки, 16 – рисует штрихи вместо стрелок. См. также flow, dew, vectc. См. раздел Vect – пример использования, для примеров кода и графика.

Команда MGL: vect udat vdat wdat ['sch'='' flag=0]
Команда MGL: vect xdat ydat zdat udat vdat wdat ['sch'='' flag=0]

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а длина и цвет пропорциональны \sqrtudat^2+vdat^2+wdat^2. См. раздел Vect 3D – пример использования, для примеров кода и графика.

Команда MGL: vectc udat vdat ['sch'='' zval=nan]
Команда MGL: vectc xdat ydat udat vdat ['sch'='' zval=nan]

Аналогично vect c flag=2+16=18. См. раздел VectC – пример использования, для примеров кода и графика.

Команда MGL: vectc udat vdat wdat ['sch'='']
Команда MGL: vectc xdat ydat zdat udat vdat wdat ['sch'='']

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а длина и цвет пропорциональны \sqrtudat^2+vdat^2+wdat^2. См. раздел VectC 3D – пример использования, для примеров кода и графика.

Команда MGL: vectl udat vdat ['sch'='' zval=nan]
Команда MGL: vectl xdat ydat udat vdat ['sch'='' zval=nan]

Аналогично vect c flag=1+16=17. См. раздел VectL – пример использования, для примеров кода и графика.

Команда MGL: vectl udat vdat wdat ['sch'='']
Команда MGL: vectl xdat ydat zdat udat vdat wdat ['sch'='']

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а длина и цвет пропорциональны \sqrtudat^2+vdat^2+wdat^2. См. раздел VectL 3D – пример использования, для примеров кода и графика.

Команда MGL: dew udat vdat ['sch'='' zval=nan]
Команда MGL: dew xdat ydat udat vdat ['sch'='' zval=nan]

Рисует капли для векторного поля {udat, vdat}, параметрически зависящего от координат xdat, ydat при z=zval. Замечу, что график требует много памяти и процессорного времени для своего создания! Цвет капель пропорционален \sqrtax^2+ay^2. Число капель определяется meshnum. См. также vect. См. раздел Dew – пример использования, для примеров кода и графика.

Команда MGL: flow udat vdat ['sch'='' num=5 zval=nan]
Команда MGL: flow xdat ydat udat vdat ['sch'='' num=5 zval=nan]

Рисует нити тока для векторного поля {udat, vdat}, параметрически зависящего от координат xdat, ydat на плоскости при z = zval. Число нитей пропорционально num. При num>0 нитей могут стартовать и изнутри сетки, в противном случае только с краев. Цвет нитей пропорционален \sqrtudat^2+vdat^2. Теплые цвета соответствуют нормальному току (типа стока). Холодные цвета соответствуют обратному току (типа источника). См. также pipe, vect. См. раздел Flow – пример использования, для примеров кода и графика.

Команда MGL: flow udat vdat wdat ['sch'='' num=3]
Команда MGL: flow xdat ydat zdat udat vdat wdat ['sch'='' num=3]

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а цвет пропорционален \sqrtudat^2+vdat^2+wdat^2. См. раздел Flow 3D – пример использования, для примеров кода и графика.

Команда MGL: flow x0 y0 udat vdat ['sch'='' zval=nan]
Команда MGL: flow x0 y0 xdat ydat udat vdat ['sch'='' zval=nan]

Рисует нить тока из точки {x0, y0} для векторного поля {udat, vdat}, параметрически зависящего от координат xdat, ydat на плоскости при z = zval. Цвет нити пропорционален \sqrtudat^2+vdat^2. Теплые цвета соответствуют нормальному току (типа стока). Холодные цвета соответствуют обратному току (типа источника).

Команда MGL: flow x0 y0 z0 udat vdat wdat ['sch'='']
Команда MGL: flow x0 y0 z0 xdat ydat zdat udat vdat wdat ['sch'='']

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а цвет пропорционален \sqrtudat^2+vdat^2+wdat^2.

Команда MGL: pipe udat vdat ['sch'='' r0=0.05 num=5 zval=nan]
Команда MGL: pipe xdat ydat udat vdat ['sch'='' r0=0.05 num=5 zval=nan]

Рисует трубки тока для векторного поля {udat, vdat}, параметрически зависящего от координат xdat, ydat на плоскости при z = zval. Число трубок пропорционально num. При num>0 нитей могут стартовать и изнутри сетки, в противном случае только с краев. Цвет и радиус трубок пропорционален \sqrtudat^2+vdat^2. Теплые цвета соответствуют нормальному току (типа стока). Холодные цвета соответствуют обратному току (типа источника). Параметр r0 задает радиус трубок. При r0<0 радиус трубок обратно пропорционален их амплитуде. См. также flow, vect. См. раздел Pipe – пример использования, для примеров кода и графика.

Команда MGL: pipe udat vdat wdat ['sch'='' r0=0.05 num=3]
Команда MGL: pipe xdat ydat zdat udat vdat wdat ['sch'='' r0=0.05 num=3]

Это 3D версия графика. Здесь массивы udat, vdat, wdat должны быть 3d массивами, а цвет пропорционален \sqrtudat^2+vdat^2+wdat^2. См. раздел Pipe 3D – пример использования, для примеров кода и графика.


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

1.15 Прочие графики

Это команды, не относящиеся к какой-то специальной категории. Сюда входят функции построения графиков по текстовым формулам (fplot, fsurf), рисования поверхностей из треугольников (triplot), произвольных точек в пространстве (dots) и реконструкции по ним поверхности (crust), графики плотности и линии уровня на плоскостях, перпендикулярных осям x, y или z (dens[xyz], cont[xyz], contf[xyz]). Каждый тип графика имеет похожий интерфейс. Есть версия для рисования одного массива с автоматическими координатами и версия для параметрически заданного массива. Строка sch задает цветовую схему (see section Цветовая схема). Предыдущая цветовая схема используется по умолчанию.

Команда MGL: densx dat ['sch'='' val=nan]
Команда MGL: densy dat ['sch'='' val=nan]
Команда MGL: densz dat ['sch'='' val=nan]

Рисуют график плотности на x, y или z плоскостях. Если dat – 3d массив, то выполняется интерполяция к заданному срезу val. Функции полезны для создания проекций 3D массивов на оси координат. См. также cont[xyz], contf[xyz], dens. См. раздел Dens projection – пример использования, для примеров кода и графика.

Команда MGL: contx dat ['sch'='' val=nan num=7]
Команда MGL: conty dat ['sch'='' val=nan num=7]
Команда MGL: contz dat ['sch'='' val=nan num=7]

Рисуют линии уровня на x, y или z плоскостях. Если dat – 3d массив, то выполняется интерполяция к заданному срезу val. Функции полезны для создания проекций 3D массивов на оси координат. См. также dens[xyz], contf[xyz], cont. См. раздел Cont projection – пример использования, для примеров кода и графика.

Команда MGL: contfx dat ['sch'='' val=nan num=7]
Команда MGL: contfy dat ['sch'='' val=nan num=7]
Команда MGL: contfz dat ['sch'='' val=nan num=7]

Рисуют закрашенные контуры уровня на x, y или z плоскостях. Если dat – 3d массив, то выполняется интерполяция к заданному срезу val. Функции полезны для создания проекций 3D массивов на оси координат. См. также dens[xyz], cont[xyz], contf.

Команда MGL: dots xdat ydat zdat ['sch'='']
Команда MGL: dots xdat ydat zdat adat ['sch'='']

Рисует произвольно расположенные точки {xdat[i], ydat[i], zdat[i]}. Если определен массив adat[i], то он задает прозрачность точек. См. также crust, mark, plot. См. раздел Dots – пример использования, для примеров кода и графика.

Команда MGL: crust xdat ydat zdat ['sch'='']

Реконструирует и рисует поверхность по произвольно расположенным точкам {xdat[i], ydat[i], zdat[i]}. Если строка содержит ‘#’, то рисуется сетчатая поверхность. См. также dots, triplot. См. раздел Crust – пример использования, для примеров кода и графика.

Команда MGL: triplot idat xdat ydat ['sch'='' zval=nan]
Команда MGL: triplot idat xdat ydat zdat ['sch'='']
Команда MGL: triplot idat xdat ydat zdat cdat ['sch'='']

Рисует поверхность из треугольников. Вершины треугольников задаются индексами idat в массиве точек {xdat[i], ydat[i], zdat[i]}. Если строка содержит ‘#’, то рисуется сетчатая поверхность. Размер по 1-му индексу массива idat должен быть 3 или больше. Массивы xdat, ydat, zdat должны иметь одинаковые размеры. Массив cdat задает цвет треугольников (если idat.ny=cdat.nx) или цвет вершин (если xdat.nx=cdat.nx). См. также dots, crust, quadplot, tricont.

Команда MGL: tricont vdat idat xdat ydat zdat cdat ['sch'='' zval=nan]
Команда MGL: tricont vdat idat xdat ydat zdat ['sch'='' zval=nan]
Команда MGL: tricont idat xdat ydat zdat ['sch'='' num=7 zval=nan]

Рисует линии уровня поверхности из треугольников при z = zval (или для z=vdat[k] если zval==NAN). Вершины треугольников задаются индексами idat в массиве точек {xdat[i], ydat[i], zdat[i]}. Размер по 1-му индексу массива idat должен быть 3 или больше. Массивы xdat, ydat, zdat должны иметь одинаковые размеры. Массив cdat (если указан) задает цвет треугольников (если idat.ny=cdat.nx) или цвет вершин (если xdat.nx=cdat.nx). См. также triplot, cont.

Команда MGL: quadplot idat xdat ydat ['sch'='' zval=nan]
Команда MGL: quadplot idat xdat ydat zdat ['sch'='']
Команда MGL: quadplot idat xdat ydat zdat cdat ['sch'='']

Рисует поверхность из четырехугольников. Вершины треугольников задаются индексами idat в массиве точек {xdat[i], ydat[i], zdat[i]}. Если строка содержит ‘#’, то рисуется сетчатая поверхность. Размер по 1-му индексу массива idat должен быть 4 или больше. Массивы xdat, ydat, zdat должны иметь одинаковые размеры. Массив cdat задает цвет четырехугольников (если idat.ny=cdat.nx) или цвет вершин (если xdat.nx=cdat.nx). См. также triplot.

Команда MGL: fplot 'y(x)' ['pen'='' zval=nan num=100]

Рисует функцию ‘y(x)’ в плоскости z=zval с координатой ‘x’ в диапазоне x-оси координат. Параметр num задает минимальное число точек по координате для графика. См. также plot.

Команда MGL: fplot 'x(t)' 'y(t)' 'z(t)' ['pen'='' num=100]

Рисует параметрическую кривую {‘x(t)’, ‘y(t)’, ‘z(t)’}, где координата ‘t’ меняется в диапазоне [0, 1]. Параметр num задает минимальное число точек по координате для графика. См. также plot.

Команда MGL: fsurf 'z(x,y)' ['sch'='' num=100]

Рисует поверхность ‘z(x,y)’ с координатами ‘x’, ‘y’ в диапазоне x-,y-осей координат. Параметр num задает минимальное число точек по координатам для графика. См. также surf.

Команда MGL: fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'='' num=100]

Рисует параметрическую поверхность {‘x(u,v)’, ‘y(u,v)’, ‘z(u,v)’}, где координаты ‘u’, ‘v’ меняются в диапазоне [0, 1]. Параметр num задает минимальное число точек по координатам для графика. См. также surf.


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

1.16 Nonlinear fitting

Эти команды подбирают параметры функций для наилучшей аппроксимации данных, т.е. минимизируют сумму \sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2. При этом аппроксимирующая функция ‘f’ может зависеть от одного аргумента ‘x’ (1D случай), от двух аргументов ‘x,y’ (2D случай) или от трех аргументов ‘x,y,z’ (3D случай). Функция ‘f’ также может зависеть от параметров. Список параметров задается строкой var (например, ‘abcd’). Обычно пользователь должен предоставить начальные значения параметров в переменной ini. Однако, при его отсутствии используются нулевые значения.

Команды fit и fits не рисуют полученные массивы. Они заполняют массив fit по формуле ‘f’ с найденными коэффициентами. При этом, координаты ‘x,y,z’ равно распределены в вдоль осей координат. Число точек в fit выбирается максимальным из размера массива fit и 100. Формулу с найденными коэффициентами можно вывести с помощью команды putsfit. См. раздел Fitting – пример использования, для примеров кода и графика.

Размерность массивов должны быть не меньше, чем число указанных массивов xdat, ydat, zdat. Также подбор коэффициентов будет осуществляться только вдоль указанных направлений (например, вдоль x и y если указаны только xdat и ydat). Если массив xdat не указан, то используется массив со значениями равно распределенными вдоль оси x.

Команда MGL: fits adat sdat 'func' 'var' [ini=0]
Команда MGL: fits xdat adat sdat 'func' 'var' [ini=0]
Команда MGL: fits xdat ydat adat sdat 'func' 'var' [ini=0]
Команда MGL: fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]

"Подгоняют" формулу вдоль x-, y- и z-направлений для массива заданного параметрически a[i,j,k](x[i,j,k], y[i,j,k], z[i,j,k]) с весовыми коэффициентами sdat[i,j,k].

Команда MGL: fit adat 'func' 'var' [ini=0]
Команда MGL: fit xdat adat 'func' 'var' [ini=0]
Команда MGL: fit xdat ydat adat 'func' 'var' [ini=0]
Команда MGL: fit xdat ydat zdat adat 'func' 'var' [ini=0]

"Подгоняют" формулу вдоль x-, y- и z-направлений для массива заданного параметрически a[i,j,k](x[i,j,k], y[i,j,k], z[i,j,k]) с весовыми коэффициентами равными 1.

Команда MGL: putsfit x y ['pre'='' 'fnt'='' size=-1]

Печатает последнюю подобранную формулу с найденными коэффициентами в точке {x, y}. Строка pre будет напечатана перед формулой. Все другие параметры такие же как в Вывод текста.


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

1.17 Создание данных

Команда MGL: new dat [nx=1 ny=1 nz=1]

Создает/пересоздает массив с именем dat данных указанного размера и заполняет его нулями. Ничего не делает при nx, ny, nz отрицательных или равных нулю.

Команда MGL: var dat num v1 [v2=nan]

Создает одномерный массив с именем dat размером num и заполняет его равномерно в диапазоне [v1, v2]. Если v2=nan, то используется v2=v1.

Команда MGL: list dat v1 ...

Создает массив с именем dat и заполняет его числовыми значениями аргументов v1 .... Команда может создавать 1d- и 2d-массивы. Для создания 2d-массивов требуется указать разделитель строк данных ‘|’. Размер массива будет [максимальное число чисел в строке * число строк]. Например, команда list 1 | 2 3 создаст массив [1 0; 2 3]. Отмечу, что максимальное число аргументов 1000.

Команда MGL: list dat d1 ...

Создает массив с именем dat и заполняет его числами из массивов d1 .... Команда может создавать 2d- и 3d-массивы (если аргументы 2d массивы). Младшие размерности всех массивов в аргументах должны быть равны размерности d1. Отмечу, что максимальное число аргументов 1000.

Команда MGL: copy dat dat2 ['eq'='' on_axis=on]
Команда MGL: copy dat val

Создает массив с именем dat и копирует в него данные из массива dat2. При этом, если указан параметр eq, то данные будут изменены по формуле аналогично команде fill (для on_axis=on) или modify (для on_axis=off).

Команда MGL: idset dat 'ids'

Устанавливает символьные обозначения для колонок данных. Строка должна содержать символы ’a’...’z’ один на колонку (без пробелов).

Команда MGL: info dat [detail=off]

Выводит информацию о массиве (размер, максимальное/минимальное значение, моменты и пр.). При detail=off показывается только краткая информация.

Команда MGL: info 'text'

Выводит текст text как информацию (предупреждение).


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

1.18 Заполнение данных

Команда MGL: fill dat v1 v2 ['dir'='x']

Заполняет значениями равно распределенными в диапазоне [v1, v2] в направлении dir={‘x’,‘y’,‘z’}.

Команда MGL: fill dat 'eq' [vdat=0 wdat=0]

Заполняет значениями вычисленными по формуле eq. Формула представляет собой произвольное выражение, зависящее от переменных ‘x’, ‘y’, ‘z’, ‘u’, ‘v’, ‘w’. Координаты ‘x’, ‘y’, ‘z’ полагаются меняющимися в диапазоне осей координат (в отличие от modify). Переменная ‘u’ – значения исходного массива, переменные ‘v’, ‘w’ – значения массивов vdat, wdat. Последние могут быть опущены.

Команда MGL: modify dat 'eq' [dim=0]
Команда MGL: modify dat 'eq' vdat [wdat=0]

Заполняет значениями вычисленными по формуле eq. Формула представляет собой произвольное выражение, зависящее от переменных ‘x’, ‘y’, ‘z’, ‘u’, ‘v’, ‘w’. Координаты ‘x’, ‘y’, ‘z’ полагаются меняющимися в диапазоне [0,1] (в отличие от fill). Переменная ‘u’ – значения исходного массива, переменные ‘v’, ‘w’ – значения массивов vdat, wdat. Последние могут быть опущены. Если указан dim>0, то изменяются только слои >=dim.

MGL command: put dat val [i=: j=: k=:]

Присваивает значения (под-)массива dat[i, j, k] = val. Индексы i, j, k равные ‘:’ задают значениия val для всего диапазона соответствующего направления(ий). Например, put dat val : 0 : задает dat[i,0,j]=val для i=0...(dat.nx-1), j=0...(dat.nz-1).

MGL command: put dat vdat [i=: j=: k=:]

Копирует значения из массива vdat в диапазон значений массива dat. Индексы i, j, k равные ‘:’ задают диапазон изменения значений в соответствующих направление(ях). Младшие размерности массива vdat должны быть больше выбранного диапазона массива dat. Например, put dat v : 0 : присвоит dat[i,0,j]=vdat.ny>dat.nz ? vdat[i,j] : vdat[i], где i=0...(dat.nx-1), j=0...(dat.nz-1) и условие vdat.nx>=dat.nx выполнено.


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

1.19 Изменение размеров данных

Команда MGL: rearrange dat mx [my=0 mz=0]

Изменяет размерность данных без изменения самого массива данных, так что результирующий массив mx*my*mz < nx*ny*nz. Если один из параметров my или mz ноль, то он будет выбран оптимальным образом. Например, если my=0, то будет my=nx*ny*nz/mx и mz=1.

Команда MGL: extend dat n1 [n2=0]

Увеличивает размер данных путем вставки (|n1|+1) новых срезов после (для n1>0) или перед (для n1<0) существующими данными. Можно добавить сразу 2 размерности для 1d массива, используя второй параметр n2. Данные в новые срезы будут скопированы из существующих. Например, для n1>0 новый массив будет a_ij^new = a_i^old where j=0...n1. Соответственно, для n1<0 новый массив будет a_ij^new = a_j^old, где i=0...|n1|.

Команда MGL: transpose dat ['dim'='yxz']

Транспонирует (меняет порядок размерностей) массив данных. Новый порядок размерностей задается строкой dim.

Команда MGL: squeeze dat rx [ry=1 rz=1 sm=off]

Уменьшает размер данных путем удаления элементов с индексами не кратными rx, ry, rz соответственно. Параметр smooth задает использовать сглаживания (т.е. out[i]=\sum_{j=i,i+r} a[j]/r) или нет (т.е. out[i]=a[j*r]).

Команда MGL: crop dat n1 n2 'dir'

Обрезает границы данных при i<n1 и i>n2 (при n2>0) или i>n[xyz]-n2 (при n2<=0) вдоль направления dir.

Команда MGL: delete dat

Удаляет массив dat и освобождает использованную память. Может быть полезно для больших неиспользуемых массивов.

Команда MGL: delete dat 'dir' [pos=off num=0]

Удаляет num срезов вдоль направления dir с позиции pos.

Команда MGL: insert dat 'dir' [pos=off num=0]

Вставляет num срезов вдоль направления dir с позиции pos и заполняет их нулями.


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

1.20 Чтение/сохранение данных

Команда MGL: read dat 'fname'

Читает данные из текстового файла с разделителями символом пробела/табуляции с автоматическим определением размера массива. Двойной перевод строки начинает новый срез данных (по направлению z).

Команда MGL: read dat 'fname' mx [my=1 mz=1]

Читает данные из текстового файла с заданными размерами. Ничего не делается если параметры mx, my или mz равны нулю или отрицательны.

Команда MGL: readmat dat 'fname' [dim=2]

Читает данные из текстового файла с размерами, указанными в первых dim числах файла. При этом переменная dim задает размерность (1d, 2d, 3d) данных.

Команда MGL: readall dat 'templ' v1 v2 [dv=1 slice=off]

Объединяет данные из нескольких текстовых файлов. Имена файлов определяются вызовом функции sprintf(fname,templ,val);, где val меняется от v1 до v2 с шагом dv. Данные загружаются один за другим в один и тот же срез данных (при slice=off) или срез-за-срезом (при slice=on).

Команда MGL: readall dat 'templ' [slice=off]

Объединяет данные из нескольких текстовых файлов, чьи имена удовлетворяют шаблону templ (например, templ="t_*.dat"). Данные загружаются один за другим в один и тот же срез данных (при slice=off) или срез-за-срезом (при slice=on).

Команда MGL: save dat 'fname'

Сохраняет массив данных в текстовый файл.

Команда MGL: readhdf dat 'fname' 'dname'

Читает массив с именем dname из HDF5 или HDF4 файла fname.

Команда MGL: savehdf dat 'fname' 'dname'

Сохраняет массив под именем dname в HDF5 или HDF4 файл fname.

Команда MGL: import dat 'fname' 'sch' [v1=0 v2=1]

Читает данные из растрового файла. RGB значения пикселов преобразуются в число в диапазоне [v1, v2] используя цветовую схему sch (see section Цветовая схема).

Команда MGL: export dat 'fname' 'sch' [v1=0 v2=0]

Сохраняет данные в растровый файл. Числовые значения, нормированные в диапазон [v1, v2], преобразуются в RGB значения пикселов, используя цветовую схему sch (see section Цветовая схема). Если v1>=v2, то значения v1, v2 определяются автоматически как минимальное и максимальное значение данных.


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

1.21 Создание новых данных

Команда MGL: combine res adat bdat

Возвращает в массиве данных res прямое произведение массивов (наподобие, res[i,j] = adat[i]*bdat[j] и т.д.).

Команда MGL: evaluate res dat idat [norm=on]
Команда MGL: evaluate res dat idat jdat [norm=on]
Команда MGL: evaluate res dat idat jdat kdat [norm=on]

Возвращает массив данных res, полученный в результате интерполяции исходного массива в точках других массивов (например, res[i,j]=dat[idat[i,j],jdat[i,j]]). Размеры массивов idat, jdat, kdat должны совпадать. Координаты в idat, jdat, kdat полагаются нормированными в диапазон [0,1] (при norm=on) или в диапазоны [0,nx], [0,ny], [0,nz] соответственно.

Команда MGL: hist res dat num v1 v2 [nsub=0]
Команда MGL: hist res dat wdat num v1 v2 [nsub=0]

Возвращает распределение (гистограмму) res из num точек от значений массива dat в диапазоне [v1, v2]. Массив wdat задает веса элементов (все веса равны 1 если wdat не указан). Параметр nsub задает число дополнительных точек интерполяции (для сглаживания получившейся гистограммы).

Команда MGL: hist res xdat adat
Команда MGL: hist res xdat ydat adat
Команда MGL: hist res xdat ydat zdat adat

Возвращает распределение (гистограмму) res от значений массива adat, параметрически зависящего от координат {xdat,ydat,zdat} в диапазоне осей координат. Массив adat играет роль веса точки. Число точек в результате res – максимум из размера res и 100.

Команда MGL: momentum res dat 'how' ['dir'='z']

Возвращает в массиве данных res момент (1d массив) данных dat вдоль направления dir. Строка how определяет тип момента. Момент определяется как res_k = \sum_ij how(x_i,y_j,z_k) dat_ij/ \sum_ij a_ij если dir=‘z’ и т.д. Координаты ‘x’, ‘y’, ‘z’ – индексы массива в диапазоне [0,1].

Команда MGL: sum res dat 'dir'

Возвращает в массиве данных res результат суммирования dat вдоль направления(ий) dir.

Команда MGL: max res dat 'dir'

Возвращает в массиве данных res максимальное значение dat вдоль направления(ий) dir. Gets array which is the maximal data values in given direction or direction(s).

Команда MGL: min res dat 'dir'

Возвращает в массиве данных res минимальное значение dat вдоль направления(ий) dir.

Команда MGL: resize res dat mx [my=1 mz=1]

Возвращает массив данных res размером mx, my, mz со значениями полученными интерполяцией значений массива dat.

Команда MGL: subdata res dat xx [yy=: zz=:]

Возвращает в res подмассив массива данных dat с фиксированными значениями индексов с положительными значениями. Например, subdata a b : 2 выделяет третью строку (индексы начинаются с нуля), subdata a b 4 : выделяет 5-ую колонку, subdata a b : : 3 выделяет 4-ый срез и т.д.

Команда MGL: trace res dat

Возвращает массив ref диагональных элементов dat[i,i] (для 2D данных) или dat[i,i,i] (для 3D данных) где i=0...nx-1. В 1D случае возвращается сам массив данных dat. Размеры массива данных должен быть dat.ny, dat.nz >= dat.nx или dat.ny, dat.nz = 1.

Команда MGL: transform dat 'type' real imag

Выполняет интегральное преобразование комплексных данных real, imag в выбранном направлении и возвращает модуль результата в res. Порядок и тип преобразований задается строкой type: первый символ для x-направления, второй для y-направления, третий для z-направления. Возможные символы: ‘f’ – прямое преобразование Фурье, ‘i’ – обратное преобразование Фурье, ‘s’ – синус преобразование, ‘c’ – косинус преобразование, ‘h’ – преобразование Ханкеля, ‘n’ или ‘ ’ – нет преобразования.

Команда MGL: transforma dat 'type' ampl phase

Аналогично предыдущему с заданными амплитудой ampl и фазой phase комплексных чисел.

Команда MGL: stfad res real imag dn ['dir'='x']

Выполняет оконное преобразование Фурье длиной dn для комплексных данных real, imag и возвращает модуль результата в res. Например, для dir=‘x’ результат будет иметь размер {int(nx/dn), dn, ny} и будет равен res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn.

Команда MGL: pde res 'ham' ini_re ini_im [dz=0.1 k0=100]

Решает уравнение в частных производных du/dz = i*k0*ham(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy – псевдо-дифференциальные операторы. Параметры ini_re, ini_im задают начальное распределение поля. Координаты в уравнении и в решении полагаются в диапазоне осей координат. Замечу, что внутри этот диапазон увеличивается в 3/2 раза для уменьшения отражения от границ расчетного интервала. Параметр dz задает шаг по эволюционной координате z. В данный момент использован упрощенный алгоритм, когда все “смешанные” члена (типа ‘x*p’->x*d/dx) исключаются. Например, в 2D случае это функции типа ham = f(p,z) + g(x,z,u). При этом допускаются коммутирующие комбинации (типа ‘x*q’->x*d/dy). Переменная ‘u’ используется для обозначения амплитуды поля |u|. Это позволяет решать нелинейные задачи – например, нелинейное уравнение Шредингера ham='p^2+q^2-u^2'. Также можно указать мнимую часть для поглощения (типа ham = 'p^2+i*x*(x>0)'), но только если зависимость от ‘i’ линейная, т.е. ham = hre+i*him. См. раздел PDE – пример использования, для примеров кода и графика.

Команда MGL: ray res 'ham' x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]

Решает систему геометрооптических уравнений dr/dt = d ham/dp, dp/dt = -d ham/dr. Это гамильтоновы уравнения для траектории частицы в 3D случае. Гамильтониан ham может зависеть от координат ‘x’, ‘y’, ‘z’, импульсов ‘p’=px, ‘q’=py, ‘v’=pz и времени ‘t’: ham = H(x,y,z,p,q,v,t). Начальная точка (при t=0) задается переменными {x0, y0, z0, p0, q0, v0}. Параметры dt и tmax задают шаг и максимальное время интегрирования. Результат res – массив {x,y,z,p,q,v,t} с размером {7 * int(tmax/dt+1) }. См. раздел Beam tracing – пример использования, для примеров кода и графика.

Команда MGL: qo2d res 'ham' ini_re ini_im ray [r=1 k0=100 xx=0 yy=0]

Решает уравнение в частных производных du/dt = i*k0*ham(p,q,x,y,|u|)[u] в сопровождающей системе координат, где p=-i/k0*d/dx, q=-i/k0*d/dy – псевдо-дифференциальные операторы. Параметры ini_re, ini_im задают начальное распределение поля. Параметр ray задает опорный луч для сопровождающей системы координат. Можно использовать луч найденный с помощью ray. Опорный луч должен быть достаточно гладкий, чтобы система координат была однозначной и для исключения ошибок интегрирования. Если массивы xx и yy указаны, то в них записываются декартовы координаты для каждой точки найденного решения. См. также pde. См. раздел Beam tracing – пример использования, для примеров кода и графика.

Команда MGL: jacobian res xdat ydat [zdat=0]

Вычисляет якобиан преобразования {i,j,k} в {xdat,ydat,zdat}, где координаты {i,j,k} полагаются нормированными в интервал [0,1]. Якобиан находится по формуле det||dr_\alpha/d\xi_\beta||, где r={xdat,ydat,zdat} и \xi={i,j,k}. Все размерности всех массивов должны быть одинаковы. Данные должны быть трехмерными если указаны все 3 массива {xdat,ydat,zdat} или двумерными если только 2 массива {xdat,ydat}.


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

1.22 Изменение данных

Эти команды изменяют данные вдоль заданного направления(ий) типа например дифференцирования, интегрирования и т.д. Направление указывается строкой dir, которая может содержать символы ‘x’, ‘y’ и/или ‘z’, вдоль которых изменения будут применены.

Команда MGL: cumsum dat 'dir'

Суммирует с накоплением в выбранном направлении(ях).

Команда MGL: integrate dat 'dir'

Выполняет интегрирование (подобно суммированию с накоплением) в выбранном направлении(ях).

Команда MGL: diff dat 'dir'

Выполняет дифференцирование в выбранном направлении(ях).

Команда MGL: diff dat xdat ydat [zdat=0]

Выполняет дифференцирование данных dat, параметрически зависящих от координат, в направлении xdat с ydat, zdat=constant. Параметр zdat может быть опущен, что соответствует 2D случаю. Используются следующие формулы (2D случай): da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j), где a_i=da/di, a_j=da/dj обозначает дифференцирование вдоль 1-ой и 2-ой размерности. Похожие формулы используются и в 3D случае. Порядок аргументов можно менять – например, если данные a(i,j) зависят от координат {x(i,j), y(i,j)}, то обычная производная по ‘x’ будет равна diff a x y, а обычная производная по ‘y’ будет равна diff a y x.

Команда MGL: diff2 dat 'dir'

Выполняет двойное дифференцирование (как в операторе Лапласа) в выбранном направлении(ях).

Команда MGL: sinfft dat 'dir'

Выполняет синус преобразование в выбранном направлении(ях). Синус преобразование есть \sum a_i \sin(k i).

Команда MGL: cosfft dat 'dir'

Выполняет косинус преобразование в выбранном направлении(ях). Синус преобразование есть \sum a_i \cos(k i).

Команда MGL: hankel dat 'dir'

Выполняет преобразование Ханкеля в выбранном направлении(ях). Преобразование Ханкеля есть \sum a_i J_0(k i).

Команда MGL: swap dat 'dir'

Меняет местами левую и правую части данных в выбранном направлении(ях). Полезно для отображения результата FFT.

Команда MGL: roll dat 'dir' num

Сдвигает данные на num ячеек в выбранном направлении(ях). Соответствует замене индекса на i->(i+num)%n.

Команда MGL: mirror dat 'dir'

Отражает данные в выбранном направлении(ях). Соответствует замене индекса на i->n-i.

Команда MGL: sew dat ['dir'='xyz' da=2*pi]

Удаляет скачки данных (например, скачки фазы после обратных тригонометрических функций) с периодом da в выбранном направлении(ях).

Команда MGL: smooth data type ['dir'='xyz']

Сглаживает данные в выбранном направлении(ях) методом type. Сейчас поддерживаются 4 метода: 0 ничего не делает, 1 линейное усреднение по 3 точкам, 2 линейное усреднение по 5 точкам, 3 квадратичное усреднение по 5 точкам.

Команда MGL: envelop dat ['dir'='x']

Находит огибающую данных в выбранном направлении. Только одно направление может быть выбрано за раз.

Команда MGL: normsl dat v1 v2 ['dir'='z' keep=on sym=off]

Нормирует данные срез-за-срезом в выбранном направлении dir в интервал [v1,v2]. Если sym=on, то используется симметричный интервал [-max(|v1|,|v2|), max(|v1|,|v2|)]. Если keep=on, то максимальное значение k-го среза ограничено величиной \sqrt\sum a_ij(k)/\sum a_ij(0).

Команда MGL: norm dat v1 v2 [sym=off dim=0]

Нормирует данные в интервал [v1,v2]. Если sym=on, то используется симметричный интервал [-max(|v1|,|v2|), max(|v1|,|v2|)]. Изменения применяются только к срезам >=dim.


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

1.23 Операторы

Команда MGL: multo dat dat2

Поэлементно умножает массив dat на dat2.

Команда MGL: multo dat val

Умножает каждый элемент на число.

Команда MGL: divto dat dat2

Поэлементно делит массив dat на dat2.

Команда MGL: divto dat val

Делит каждый элемент на число.

Команда MGL: addto dat dat2

Поэлементно прибавляет dat2 к массиву dat.

Команда MGL: addto dat val

Прибавляет число к каждому элементу.

Команда MGL: subto dat dat2

Поэлементно вычитает dat2 из массива dat.

Команда MGL: subto dat val

Вычитает число из каждого элемента.


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

1.24 Программирование

Эти команды управляют порядком выполнения других команд (условия, циклы, подпрограммы), (пере-)определяют аргументы скрипта и пр.

Команда MGL: chdir 'path'

Переходит в папку path.

Команда MGL: define $N smth

Задает N-ый аргумент скрипта равным smth. Отмечу, что smth используется как есть (с символами ‘'’ если присутствуют). Выполняется только подстановка других макроопределений $0...$9, $a...$z. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: define name smth

Определяет константу (скаляр) с именем name и числовым значением smth. Позднее она может быть использована как обычное число.

Команда MGL: defchr $N smth

Задает N-ый аргумент скрипта равным символу с UTF кодом smth. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: defnum $N smth

Задает N-ый аргумент скрипта равным числовому значению smth. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: defpal $N smth

Задает N-ый аргумент скрипта равным символу палитры с индексом, найденным из smth. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: call 'fname' [ARG1 ARG2 ... ARG9]

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

Команда MGL: func 'fname' [narg=0]

Определяет подпрограмму с именем fname и задает число требуемых аргументов. Аргументы будут помещены в параметры скрипта $1, $2, ... $9. Отмечу, что выполнение основной программы должно быть остановлено до начала определений подпрограмм. См. также stop, return.

Команда MGL: return

Возвращается из подпрограммы.

Команда MGL: if dat 'cond'

Начинает блок команд, выполняемый если каждый элемент dat удовлетворяет условию cond.

Команда MGL: if val

Начинает блок команд, выполняемый если val не ноль.

Команда MGL: elseif dat 'cond'

Начинает блок команд, выполняемый если предыдущий if или elseif не был выполнен и каждый элемент dat удовлетворяет условию cond.

Команда MGL: elseif val

Начинает блок команд, выполняемый если предыдущий if или elseif не был выполнен и val не ноль.

Команда MGL: else

Начинает блок команд, выполняемый если предыдущий if или elseif не был выполнен.

Команда MGL: endif

Заканчивает определение блока if/elseif/else.

Команда MGL: for $N v1 v2 [dv=1]

Начинает блок команд, выполняемый в цикле с $N-ым аргументом изменяющимся от v1 до v2 с шагом dv. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: for $N dat

Начинает блок команд, выполняемый в цикле с $N-ым аргументом пробегающим значения массива dat. Здесь N это цифра (0...9) или буква (a...z).

Команда MGL: next

Заканчивает блок цикла for.

Команда MGL: once val

Определяет код (между once on и once off) который будет выполнен только один раз. Полезно для работы с большими данными в программах типа UDAV.

Команда MGL: stop

Останавливает выполнение скрипта.


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

1.25 Опции команд

Опции команд позволяют легко настроить вид отдельного графика не меняя глобальных настроек для все рисунка. Опции указываются после команды. Каждая опция отделяется от предыдущей символом ‘;’. Опции работают так, что запоминают текущие настройки рисунка, применяют собственные настройки, выполняют команду и возвращают глобальные настройки обратно. Поэтому использование опций для команд обработки данных или настройки графика бесполезно.

Наиболее часто используемые опции – xrange, yrange, zrange, устанавливающие границы изменения осей координат (и тем самым автоматических массивов). Например, команда plot y; xrange 0.1 0.9 построит кривую с x-координатой равно распределенной в интервале 0.1 ... 0.9, а не вдоль текущей оси x.

Полный список опций:

Опция MGL: alpha val
Опция MGL: alphadef val

Задает величину прозрачности поверхности. Значение должно быть в диапазоне [0, 1]. См. также alphadef

Опция MGL: ambient val

Задает яркость фонового освещения. Значение должно быть в диапазоне [0, 1]. См. также ambient

Опция MGL: crange val1 val2

Задает границы цветовой шкалы. См. также crange

Опция MGL: xrange val1 val2

Задает границы изменения координаты x. См. также xrange

Опция MGL: yrange val1 val2

Задает границы изменения координаты y. См. также yrange

Опция MGL: zrange val1 val2

Задает границы изменения координаты z. См. также zrange

Опция MGL: cut val

Задает обрезание точек за пределами осей координат. См. также cut

Опция MGL: fontsize val

Задает размер текста. См. также font

Опция MGL: marksize val

Задает размер маркеров. См. также marksize

Опция MGL: meshnum val

Задает ориентировочное число линий, стрелок, ячеек и пр. См. также meshnum

Опция MGL: legend 'txt'

Добавляет строку ’txt’ во внутренний массив записей легенды. Стиль линии и маркера аргумента последней вызванной команды построения 1D графики. См. также legend


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

1.26 Суффиксы переменных

Суффиксы позволяют быстро получить числовую характеристику (размер, максимальное или минимальное значение, сумму элементов и т.д.) массива данных и использовать ее как число (скаляр) в аргументах. Суффиксы начинаются с точки ‘.’ сразу после (без пробелов) имени переменной и временного массива. Например, a.nx даст размер массива a по оси х, b(1).max даст максимальное значение второй строки массива b, (c(:,0)^2).sum даст сумму квадратов элементов первой колонки массива c и т.д.

Полный список суффиксов:

nx, ny, nz

Размер массива в направлении x, y, z соответственно.

max

Максимальное значение массива.

min

Минимальное значение массива.

sum

Сумма элементов массива.

a

Первый элемент массива (элемент с индексами 0,0,0).

fst

Первое не нулевое значение массива.

lst

Последнее не нулевое значение массива.

mx, my, mz

Положение максимума в направлении x, y, z соответственно.

ax, ay, az, aa

Положение центра масс в направлении x, y, z соответственно или среднее значение массива.

wx, wy, wz, wa

Ширина в направлении x, y, z соответственно или дисперсия элементов массива.

sx, sy, sz, sa

Асимметрия в направлении x, y, z соответственно или элементов массива.

kx, ky, kz, ka

Эксцесс в направлении x, y, z соответственно или элементов массива.


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

1.27 Утилиты для MGL

MathGL содержит несколько программ для работы со скриптами MGL. Есть утилита для сохранения в растровое (mgl2png, mgl2gif) или векторное (mgl2eps, mgl2svg) изображения. Программа mglview показывает результат выполнения скрипта MGL и позволяет вращать и настраивать график. Также можно транслировать MGL скрипт в C++ файл с помощью программы mgl2cpp.

Все эти программы имеют схожий набор аргументов. Первым идет имя скрипта, а вторым идет имя выходного файлы (может быть опущено), последние аргументы – опции скрипта и программы. К опциям относятся параметры скрипта (это $0, $1, ... $9) и настройки локали. Параметры скрипта имеют формат ‘-Nval’, где N=0,1...9 – номер параметра, val – его значние. Например, опция ‘-1test’ заменит $1 на ‘test’ в скрипте. Опция -Lval устанавливает локаль в значение val. Например, ‘-Lutf8’ будет использовать UTF-8 в скрипте.

Также можно создавать анимированные изображения GIF или набор JPEG файлов с именами ‘frameNNNN.jpg’ (где ‘NNNN’ – номер кадра). Для этого в скрипте надо указать параметры анимации для каждого кадра (строками с коментариями ##a val или опциями ‘-Aval’) или в цикле (строкой с комментарием ##с v1 v2 [dv] или опцию ‘-Cn1:n2’), которые будут подставлены в качестве параметра $0 при последовательном вызове скрипта. Для сохранения кадров в JPEG просто добавьте команду write '' в конце скрипта.


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

This document was generated by Alexey Balakin on May 31, 2011 using texi2html 1.82.