Суперкоманды
cedfint - конвертирование фрагмента edf файлов в dat файлы матриц в формате int
Программа выделяет из серии edf файлов, имена которых имеют числовые номера на конце, часть картинки и записывает пиксели картинки в dat файлы с теми же номерами в формате целых чисел int. Для ее использования надо задать входную информацию которая представляет собой три текста и 9 чисел. Тексты надо напечатать в текстовый массив, после каждого текста, включая последний, пробел обязателен. Вот пример: #pri task/snsp/es some000.edf some \E . Первый текст -- это указание на имя папки, где находятся все файлы. Второй текст -- это полное имя edf файла, в котором перед точкой обятельно должны быть три нуля, а реальные файлы должны вместо нулей иметь номера. Третий текст -- это начало имени dat файла без номера и без расширения. Номера будут те же, что и у edf файлов, а расширение всегда dat и оно подставляется автоматически. Вот пример задания числовых параметров. #d 13 i(1) L W H O N w h x y . Здесь вместо чисел условно стоят буквы, чуть чуть отражающие смысл числовых параметров. Более конкретно: L -- это длина шапки edf файла в байтах, ее можно получить как разность полного размера файла и размера картинки в байтах. W -- ширина исходной картинки в пикселях. H -- высота исходной картинки в пикселях. O -- порядок байтов в 2-х байтовом представлении 16-тиричного числа, имеет два значения 0 -- LowByteSecond (младший байт второй) и 1 -- LowByteFirst (младший байт первый). N -- целое число, три старших разряда которого задают номер первого файла, а три младших разряда задают номер последнего файла. Нули слева можно не писать. w -- ширина фрагмента для записи в dat файл в пикселах. h -- высота фрагмента для записи в dat файл в пикселах. x,y -- координаты смещения левого верхнего угла фрагмента в пикселах, отсчет от нуля. Описанные 9 чисел надо записать в целый массив и значение первого индекса указать в параметре [n]. Вот полный пример вызова суперкоманды.
# s(3)=1; #pri task/snsp/Escan_1 escan_0000.edf esc_0 \E
#d 9 i(1) 2048 1376 1040 1 2003 1376 1040 0 0 #p [n=1;] ##cedfint
cedf - показ и конвертирование фрагмента edf файлов в jpg файлы
Программа может показать серию edf файлов, имена которых имеют числовые номера на конце, а также конвертирует в jpg файл любой фрагмент из edf файлов. Для ее использования надо задать входную информацию которая представляет собой три текста и 13 чисел. Тексты надо напечатать в текстовый массив, после каждого текста, включая последний, пробел обязателен. Вот пример: #pri task/snsp/es some000.edf some \E . Первый текст -- это указание на имя папки, где находятся все файлы. Второй текст -- это полное имя edf файла, в котором перед точкой обятельно должны быть три нуля, а реальные файлы должны вместо нулей иметь номера. Третий текст -- это начало имени jpg файла без номера и без расширения. Номера будут те же, что и у edf файлов, а расширение всегда jpg и оно подставляется автоматически. Вот пример задания числовых параметров. #d 13 i(1) M L W H O N w h x y S B T . Здесь вместо чисел условно стоят буквы, чуть чуть отражающие смысл числовых параметров. Более конкретно: M -- это модификация показа. Параметр имеет три значения 0 -- только показать, 1 -- показать и записать в файл, 2 -- только записать в файл без остановки работы программы. L -- это длина шапки edf файла в байтах, ее можно получить как разность полного размера файла и размера картинки в байтах. W -- ширина исходной картинки в пикселях. H -- высота исходной картинки в пикселях. O -- порядок байтов в 2-х байтовом представлении 16-тиричного числа, имеет два значения 0 -- LowByteSecond (младший байт второй) и 1 -- LowByteFirst (младший байт первый). N -- целое число, три старших разряда которого задают номер первого файла, а три младших разряда задают номер последнего файла. Нули слева можно не писать. w -- ширина фрагмента для записи в jpg файл в пикселах. h -- высота фрагмента для записи в jpg файл в пикселах. x,y -- координаты смещения левого нижнего угла фрагмента в пикселах, отсчет от нуля. S -- стиль показа, это сложный параметр, у которого каждый разряд и знак имеет свое значение. Обычно контраст такой, что минимум черный, максимум белый. Но если знак отрицательный, то минимум белый, максимум черный. Младший разряд задает масштабирование: 1 - линейное, 2 - логарифмическое, 3 - квадратный корень. Обычно максимальное и минимальное значения вычисляются автоматически. Но если второй разряд 1, то они задаются в реальном массиве, а первый индекс указывается параметром [b]. Описанные 13 чисел надо записать в целый массив и значение первого индекса указать в параметре [n]. Вот полный пример вызова суперкоманды для копирования.
# s(3)=1; #pri task/snsp/Escan_1 escan_0000.edf esc_0 \E #d 2 r(1) 0 1000
#d 13 i(1) 1 2048 1376 1040 1 2003 1376 1040 0 0 11 1 99999 #p [n=1; b=1;] ##cedf
butt - программа маленькой кнопочки [OK] для задержки программы
Программа рисует на экране маленькую кнопочку с названием OK и ждет пока пользователь кликнет эту кнопочку. Это бывает необходимо, когда надо задержать выполнение программы, до тех пор пока пользователь не разрешит ее продолжить. Эту суперкоманду (СК) можно использовать в паре с СК inff, которая выставляет окно с информацией без задержки программы. Наверняка у нее найдутся и другие применения. Перед вызовом программы необходимо в переменных X и Y определить координаты левого нижнего угла кнопочки.
inff - подсказки, синий текст на коричневом фоне
Программа используется для автоматического показа на экране разного рода информационных текстовых сообщений стандартного вида. Стандартными являются цвет текста (синий) и фона (светлокоричневый), размер (14) и тип (простой) текста. Фон высвечивается в области с размерами W и H и с координатами левого верхнего угла X и Y. Переменная N2 задает номер картинки для внутренней передачи из графики в окно. Ее значение может быть от 1 до 100. Имеются две модификации, которые задаются переменной M. Если M = 0, то текст берется из последней печати командой #pri, при этом признаки конца строки учитываются естественным образом. Если M = 1, то из последней печати берется имя файла и текст берется из этого файла начиная с N1-й строки и всего N строк. Этот режим могу использовать только я. Список всех используемых переменных: J,M,N,N1,N2,W,H,X,Y,f1,f2,y. Программа открывает окно на неограниченное время. Окно надо закрывать командой #fr [op=c; mo=1;] когда это необходимо. Закрыть окно вручную невозможно, поэтому будьте аккуратны.
mess - программа легкой подсказки в форме статусной строки
Программа выставляет стандартное окно в нижней строке экрана как раз над статусной строкой Виндовс с текстом в одну строку. Текст должен быть напечатан перед ее вызовом командой #pri text\E. Ее основное назначение - сообщить пользователю о необходимых действиях во время ожидания от него каких-либо действий. Это очень простая и легкая форма, которая сделана так, чтобы не занимать экран. После того как действие сделано необходимо закрыть окно командой #fr [op=c; mo=1;].
ssel - программа вертикального фасонного меню
Программа выставляет окно без рамки, на котором написан заголовок и нарисованы кнопки меню. Перед вызовом программы необходимо задать ее параметры, а именно в переменных X и Y - координаты левого верхнего угла окна, W и H - ширина и высота одной кнопки меню, K - тип текста, может принимать 4 значения: 0 - простой, 1 - жирный, 2 - наклонный и 3 - жирный-наклонный, Необходимо задать первые 5 элементов таблицы цветов. 1-й цвет для фона, 2-й цвет для заголовка, 3-й цвет для имен кнопок меню, 4 и 5 цвета - для градиента цвета, которым рисуются кнопки меню. Если число кнопок n то необходимо напечатать n+2 текстов, разделенных вертикальной чертой по образцу #pri title|first|second|...|Font|\E . Здесь первый текст - заголовок, следующие - названия кнопок меню, последний текст - имя фонта, который будет использоваться для написания кнопок. Необходимо сделать проверку на наличие фонта и если он отсутсвует на компьютере, то предложить альтернативные варианты. После того, как окно выставлено, программа ждет выбора от пользователя, выбирать можно кликом мышки на соотвествующей кнопке меню. После клика окно закрывается автоматически, а выбранный номер возвращается в переменную &.
warn - программа предупреждения о задержках
Программа выставляет стандартное окно посередине экрана с текстом в одну строку. Текст должен быть напечатан перед ее вызовом командой #pri text\E. Ее основное назначение - сообщить пользователю о возможной задержке в работе в связи с необходимостью какое-то время потратить на расчеты. Это очень простая и легкая форма. После того как расчет закончен необходимо закрыть окно командой #fr [op=c; mo=1;]. Есть конечно возможность выставлять более сложное окно, показывающее мониторинг выполнения расчетов. Но если время ожидания не очень большое, то такая форма намного проще.
sma - окно законченного графика функций в массиве r() с аргументом
Программа показывает стандартный график функций, значения которых вычислены в массиве r() на постоянной сетке аргумента. Все параметры заданы, кроме 6 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записаны функции, B = число точек аргумента, C = число функций, D = минимальное значение аргумента, E = максимальное значение аргумента, F = номер цвета, которым будет нарисована первая кривая, остальные будут иметь номера сдвинутые каждый раз на единицу. Кроме того, необходимо напечатать заголовок графика командой #pri .\E Размер картинки 880*600. Картинка автоматически спасается в файл с именем sma.png. Пример вызова:
# A=1; B=101; C=1; D=-1; E=1; F=247; #pri Figure/E ##sma
smas - окно законченного графика функций в массиве r() с аргументом
Программа показывает стандартный график функций, значения которых вычислены в массиве r() на постоянной сетке аргумента. Все параметры заданы, кроме 7 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записаны функции, B = число точек аргумента, C = число функций, D = минимальное значение аргумента, E = максимальное значение аргумента, F = номер цвета, которым будет нарисована первая кривая, остальные будут иметь номера сдвинутые каждый раз на единицу, G = масштабирующий множитель размера рисунка на экране. Кроме того, необходимо напечатать заголовок графика командой #pri .\E Размер картинки 880*600 если G = 1. Изменяя параметр G можно получить картинку любого размера. Картинка автоматически спасается в файл с именем smas.png. Пример вызова:
# A=1; B=101; C=1; D=-1; E=1; F=247; G=0.5; #pri Figure/E ##smas
smasf - окно законченного графика функций в массиве r() с аргументом
Программа создает стандартный график функций, значения которых вычислены в массиве r() на постоянной сетке аргумента. Все параметры заданы, кроме 7 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записаны функции, B = число точек аргумента, C = число функций, D = минимальное значение аргумента, E = максимальное значение аргумента, F = номер цвета, которым будет нарисована первая кривая, остальные будут иметь номера сдвинутые каждый раз на единицу, G = масштабирующий множитель размера рисунка на экране. Кроме того, необходимо напечатать заголовок графика командой #pri .\E Размер картинки 880*600 если G = 1. Изменяя параметр G можно получить картинку любого размера. Картинка автоматически спасается в файл с именем, которое задается параметром [form=...;] и с расширением png, но не показывается на экране. Это удобно при записи картинок в цикле при автономной работе программы. Пример вызова:
# A=1; B=101; C=1; D=-1; E=1; F=247; G=0.5; #p [form=\u115;\I-2 k;\E] #pri Figure/E ##smasf
smasl - окно законченного графика функций в массиве r() с аргументом
Программа показывает стандартный график функций, значения которых вычислены в массиве r() на постоянной сетке аргумента. Все параметры заданы, кроме 7 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записаны функции, B = число точек аргумента, C = число функций, D = минимальное значение аргумента, E = максимальное значение аргумента, F = номер цвета, которым будет нарисована первая кривая, остальные будут иметь номера сдвинутые каждый раз на единицу, G = масштабирующий множитель размера рисунка на экране. Кроме того, необходимо напечатать заголовок графика командой #pri .\E Размер картинки 980*500 если G = 1. Изменяя параметр G можно получить картинку любого размера. Картинка автоматически спасается в файл с именем smasl.png. Пример вызова:
# A=1; B=101; C=1; D=-1; E=1; F=247; G=0.5; #pri Figure\E ##smasl
smau - окно законченного графика функций в массиве r() с аргументом
Программа показывает стандартный график функций, значения которых вычислены в массиве r() на постоянной сетке аргумента. Все параметры заданы, кроме 7 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записаны функции, B = число точек аргумента, C = число функций, D = минимальное значение аргумента, E = максимальное значение аргумента, F = номер цвета, которым будет нарисована первая кривая, остальные будут иметь номера сдвинутые каждый раз на единицу, G = составное целое число из 4 разрядов. Четверный разряд указывает на показ графика, 0 - не показывать, 1 -показывать с остановкой работы программы. Три младшие разряда задают коэффициент масштабирования графика в процентах, то есть 100 означает без масштабирования. Стандартное значение G=1100; Кроме этого, перед вызовом программы необходимо напечатать два текста, разделенные символом вертикальной черты '|'. Первый текст определяет имя файла для записи картинки без расширения (расширение всегда png). Второй текст показывается над графиком как заголовок. Размер картинки без масштабирования 980*500 (если G = 100 или 1100). Изменяя параметр G можно получить картинку любого размера. Пример вызова:
# A=1; B=101; C=1; D=-1; E=1; F=247; G=1100; #pri s\I-2 k;|Figure\E ##smau
smmu - универсальная процедура графика матрицы чисел в виде карты почернения (линейная шкала)
Программа показывает стандартный график матрицы чисел, записанной в массиве r() как функция двух аргументов на сетке с постоянным шагом. Все параметры заданы стандартным образом, кроме 4 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записана матрица, B = число точек первого аргумента (по горизонтали), C = число точек второго аргумента (по вертикали), D = составное целое число из 4 разрядов. Четверный разряд указывает на показ графика, 0 - не показывать, 1 -показывать с остановкой работы программы. Три младшие разряда задают коэффициент масштабирования графика в процентах, то есть 100 означает без масштабирования. Стандартное значение D=1100; Кроме этого, перед вызовом программы необходимо напечатать два текста, разделенные символом вертикальной черты '|'. Первый текст определяет имя файла для записи картинки без расширения (расширение всегда png). Второй текст показывается над графиком как заголовок. Программа показывает числа, нормированные на интервал (0,1), а значения минимума и максимума реальной матрицы показываются в заголовке. Она не портит переменные и массивы, кроме 100 последних элементов массива r() и 5 последних элементов массива i(). Вот пример использования процедуры
# A=1; B=N; C=N; D=1100; #pri filename|title\E ##smmu
smmul - универсальная процедура графика матрицы чисел в виде карты почернения (логарифмичекая шкала)
Программа показывает стандартный график матрицы чисел, записанной в массиве r() как функция двух аргументов на сетке с постоянным шагом. Все параметры заданы стандартным образом, кроме 4 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива r(), где записана матрица, B = число точек первого аргумента (по горизонтали), C = число точек второго аргумента (по вертикали), D = составное целое число из 4 разрядов. Четверный разряд указывает на показ графика, 0 - не показывать, 1 -показывать с остановкой работы программы. Три младшие разряда задают коэффициент масштабирования графика в процентах, то есть 100 означает без масштабирования. Стандартное значение D=1100; Кроме этого, перед вызовом программы необходимо напечатать два текста, разделенные символом вертикальной черты '|'. Первый текст определяет имя файла для записи картинки без расширения (расширение всегда png). Второй текст показывается над графиком как заголовок. Программа показывает числа, нормированные на максимальное значение равное 1, а значения минимума и максимума реальной матрицы показываются в заголовке. Используется логарифмическая шкала, поэтому минимальное значение должно быть больше 0. Ошибка не фиксируется. Команда не портит переменные и массивы, кроме 100 последних элементов массива r() и 5 последних элементов массива i(). Вот пример использования процедуры
# A=1; B=N; C=N; D=1100; #pri filename|title\E ##smmul
smq3d - окно показа 2D функции в массиве r() как квази 3D графика
Программа показывает квази-трехмерный график 2D функции, значения которой записаны в массиве r(). Все параметры заданы, кроме 10 параметров, которые следует записать в переменные, а именно, A = начальный индекс массива, B = число точек по оси X, C = число точек по оси Y, X1, X2 = минимальное и максимальное значения аргумента по оси X, Y1, Y2 = минимальное и максимальное значения аргумента по оси Y, o1 = дополнительный сдвиг начала осей вправо в пикселах (0 или больше), o2 = добавление к шагу 1 для сдвижки вправо следующего сечения, o3 = вертикальный сдвиг следующего сечения в единицах 0.001 от максимального значения (от 10 до 50). Программа позволяет очень просто получить вполне качественный график двумерного массива.
arc - модуль эллиптической области с границей в среде универсальной графики
Программа используется для рисования эллиптической области с границей в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы, а именно, в переменной H - вертикальный размер графической области, а в первых элементах реального массива r() следующие значения: (1),(2) x,y - координаты центра, вокруг которого рисуется круг или эллипс, (3),(4) - ширина и высота прямоугольной области, в которую вписывается эллипс, (5),(6) - начальный угол и интервал углов, которые используются для рисования дуги или части эллипса, углы измеряются в градусах и отсчитываются слева против часовой стрелки, (7) - тип контура, может иметь три значения, а именно: 0 - контур не замкнут, рисуется только линия, 1 - контур замкнут хордой, 2 - контур замкнут радиусами, то есть линиями из центра в концы контура (кусок пирога), (8) - толщина линии контура, если равна нулю, то линия не рисуется, (9) - цвет линии-контура, если равен нулю, то линия не рисуется, (10) - цвет самой области, если равен нулю, то область не рисуется, (11) - угол поворота всей фигуры как целое вокруг ее центра, измеряется в градусах и против часовой стрелки, отсчет координат идет от левого нижнего угла области графика. Входные данные не сохраняются. Используются переменные: H,С,o,o1,r(1)-r(18).
area - модуль произвольной области с границей в среде универсальной графики
Программа используется для рисования произвольной области с границей в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы, а именно, в переменной H - вертикальный размер графической области, а в первых элементах реального массива r() следующие значения: (1) - толщина линии контура области, если равна нулю, то линия не рисуется, (2) - цвет линии-контура, если равен нулю, то линия не рисуется, (3) - цвет самой области, если равен нулю, то область не рисуется, (4) - число точек на контуре области, последняя точка всегда соединяется с первой, образуя замкнутый контур, (5) - ... x,y координаты всех точек контура, отсчет координат идет от левого нижнего угла области графика. Входные данные не сохраняются. Используются переменные: H,o,O.
arrow - модуль стрелки в среде универсальной графики
Программа используется для рисования стрелки в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы, а именно, в переменной H - вертикальный размер графической области, а в первых элементах реального массива r() следующие значения: (1),(2) - x,y координаты начала стрелки, при этом предполагается, что головка стрелки находится на ее конце, (3) - угол поворота стрелки вокруг начала из горизонтального положения против часовой стрелки, (4) - полная длина стрелки от ее начала до ее конца, включая головку, (5) - толщина линии на стрелке, (6) номер цвета, которым рисуется стрелка, (7) - ширина головки, длина головки фиксирована как 1.5*ширину. Входные данные не сохраняются. Используются переменные: H,С,a9,b9,c9,d9, r(1)-r(16).
linem - модуль линии между двумя точками в среде универсальной графики
Программа используется для рисования линии между двумя точками в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы в первых 7 элементах массива r(): x1,y1,x2,y2,T,C,H, где x1,y1 - координаты первой точки, x2,y2 - координаты второй точки, T - толщина линии, C - номер цвета, H - вертикальный размер графической области. Координаты отсчитываются от левой нижней точки области рисунка. Транляцию объекта наверх нужно выполнять с отрицательым значением вертикальной координаты. Используются 12 первых элементов массива r(). Существует также суперкоманда line, в которой координаты надо задавать от левого верхнего угла области рисунка, а 7-й параметр не используется.
mline - модуль многосегментной линии в среде универсальной графики
Программа используется для рисования многосегментной линии в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы, а именно, в переменной H - вертикальный размер графической области, C - номер цвета, T - толщина линии, N - число точек на линии. Линия будет иметь N-1 сегментов, так как внутренние точки используются дважды. Далее в массиве r(1) - r(2*N) должны быть заданы x,y координаты всех точек, парами на каждую точку, а в массиве i(1) - i(N-1) должны быть заданы признаки видности сегмента, если 1, то сегмент рисуется, если 0 - то не рисуется. То есть линия может состоять из кусков как пунктир. Используются переменные: C,H,N,T,k,l,n,o1,o2,первые элементы r() и i() и последние 10 элементов r(). Пример использования команды можно посмотреть в программе /03/demo.acl. Транляцию объекта наверх нужно выполнять с отрицательым значением вертикальной координаты.
mtext - модуль текста из многих строк в среде универсальной графики
Программа используется для рисования текста, состоящего из многих строк в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы, а именно, в переменной H - вертикальный размер графической области, а в первых элементах реального массива r() следующие значения: (1),(2) - x,y координаты базовой точки постановки первой строки текста на график, (3) - угол вращения строк в градусах против часовой стрелки, (4) - размер текста в единицах графика (для простоты можно считать в пикселях), (5) - цвет текста, (6) - способ установки текста: 1 - базовая точка слева, 2 - в середине, 3 - справа, вертикальная позиция внизу, 4, 5, 6 - то же самое, но вертикальная позиция посередине, 7, 8, 9 - вертикальная позиция наверху текста (7) - тип текста: 0 - простой, 1 - жирный, 2 - наклонный, 3 - жирный-наклонный (8) - базовый сдвиг вниз следующей строки текста по отношению к предыдущей. Кроме того в следующих элементах (9), (10), . . . необходимо для каждой строки, начиная со второй задать дополнительный сдвиг ее положения по горизонтали и вертикали, стандартно нужно задавать нули. Всего таких пар чисел надо задать n-1, если n - число строк. Задаваемые значения не сохраняются. Кроме того, имя шрифта (фонта) необходимо задать в \Tf1 f2. Сам текст должен быть напечатан перед вызовом команды, причем каждая строка должна заканчиваться признаком конца строки, включая последнюю строку. Замечу, что в случае одной строки эта команда совпадает с командой text. Вертикальная координата считается снизу вверх. Программа портит N первых элементов массива i(), 12+2*N первых элементов массива r(), а также последние элементы этого массива.
pfeg - модуль графика функции в массиве r() в среде универсальной графики
Программа используется для рисования научного графика функции одной переменной на осях координат в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед ее вызовом необходимо задать достаточно большое количество параметров, определяющих свойства графика. Так как это не законченное окно графика, а лишь модуль, то он рассчитан на рисование только одной функции на осях координат. Если необходимо рисовать несколько функций на одних и тех же осях координат, то можно просто несколько раз повторить вызов этого модуля с разными функциями, но с теми же осями координат или вообще без осей. А можно рисовать и много графиков с разными осями и в разных позициях. Итак, в массиве r() задаются значения функции на сетке с постоянным шагом. В переменных X1 и X2 необходимо задать минимальное и максимальное значения аргумента, N - число точек, B - начальный индекс массива r(), где задана функция, F - начальный индекс массива r(), где заданы 11 параметров разметки осей (ПРО), H - вертикальный размер полной области для всего рисунка, как задано командой #eg [op=open; ...], это необходимо для правильного пересчета вертикальных координат, T1 - толщина линий на осях координат, T2 - толщина кривой, изображающей функию, С - номер цвета, которым рисуется кривая, оси всегда рисуются черными. Кроме переменных необходимо задать параметры командой
#p [wid= ; hei= ; tsi= ; bot= ; top= ; sty= ; mki= ; msi= ;]
где [wid] и [hei] задают ширину и высоту осей графика, [tsi] задает размер текста для цифр на осях, [bot] и [top] задают длину коротких и длинных рисок, [sty] задает способ рисования осей. Это в общем случае 5-тиразрядное целое число. Первые 4 разряда при отсчете слева задают нормальный (0) отсутсвие (1) аномальный (2) способы задания левой, нижней, правой и верхней осей соответсвенно. Нормальное задание осей, когда левая и нижняя с числами, а правая и верхняя - без чисел. Аномальное задание - как раз наоборот. Если задана 1 то данная ось не рисуется. Наконец 5-й, самый младший, разряд показывает способ задания рисок на осях, есть два варианта (0) = риски внутрь (1) = риски наружу. Левые нули можно не писать. Параметр [mki] задает тип маркера, он может иметь пять значений 0,1,2,3,4, где 0 - означает кривую (маркеров нет), остальные значения показывают функцию маркерами: 1 - пустой квадрат, 2 - полный квадрат, 3 - пустой круг, 4 - полный круг. Для случаев 1 и 3 переменная T2 задает толщину линии рисования маркеров. Параметр [msi] задает размер маркера в пикселах, он должен быть достаточно большим, во всяком случае больше толщины линии, которым маркер рисуется. Хотя можно пробовать разные варианты.
Важно знать, что график помещается в левый нижний угол всей области рисунка. Поэтому перед вызовом программы надо задать трансляцию координат на заданный вектор, причем для подъема графика надо задавать отрицательное вертикальное смещение, потому что смещение делается сверху вниз. Еще один момент. Если несколько функций задаются одновременно, то надо помнить, что программа портит первые ячейки массивов r() и i(). Для одной кривой это неважно, так как программа копирует данные, но если кривых несколько, то лучше их задавать в номерах более 1000. А 11 параметров (ПРО) сразу после кривых.
Параметры разметки осей описаны в описании языка ACL в главе 19. Ниже я повторю это описание: 1 = fnor (единица измерения для функций, график будет показывать f(x)/fnor, если нормировать не надо. ставим 1), 2 = xmin (минимальное значение на оси x), 3 = xmax (максимальное значение на оси x), 4 = xmf (значение для первой длинной риски на оси x), 5 = xms (разница значений между длинными рисками на оси x), 6 = xni (число коротких рисок в области между длинными рисками на оси x), 7 = ymin (минимальное значение на оси y), 8 = ymax (максимальное значение на оси y), 9 = ymf (значение для первой длинной риски на оси y), 10 = yms (разница значений между длинными рисками на оси y), 11 = yni (число коротких рисок в области между длинными рисками на оси y).
Список всех используемых переменных: B,С,F,H,N,T1,T2,X1,X2, C8,A9-H9,S9,i9,k9,l9,n9,x9,y9 i(1)-.. , r(1)-.. ,r(810997)-.. Полезно посмотреть пример использования суперкоманды в тексте программы "/proc/demo.acl", которая тестирует все суперкоманды.
rectm - модуль прямоугольной области с границей в среде универсальной графики
Программа используется для рисования прямоугольной области с границей в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы необходимо задать входные параметры для ее работы в первых элементах реального массива r(), а именно: (1),(2) - x,y координаты левой верхней точки прямоугольника, отсчитываемые от левой нижней точки всей области рисунка, (3),(4) - ширина и высота прямоугольной области, (5) - толщина линии контура прямоугольника, если равна нулю, то линия не рисуется, (6) - цвет линии-контура, надо задавать даже если линия не рисуется, (7) - цвет самой области, r(8) - вертикальный размер полной области рисунка. Используются 13 первых элементов массива r(). Существует еще процедура rect , которая отличается тем, что в ней координаты вехней левой точки прямоугольника отсчитываются от верхней левой точки области, а параметр r(8) задавать необязательно.
text - модуль текстовой строки в среде универсальной графики
Программа используется для рисования строки текста в среде универсальной графики. Перед использованием программы необходимо открыть режим универсальной графики командой #eg [op=open; ...], а после использования закрыть этот режим командой #eg [op=clos; ...]. Кроме того, перед вызовом программы первые 7 элементов реального массива r() должны содержать следующие значения. (1),(2) - x,y координаты базовой точки постановки текста на график, (3) - угол вращения в градусах против часовой стрелки, (4) - размер текста в единицах графика (для простоты можно считать в пикселях), (5) - цвет текста, (6) - способ установки текста: 1 - базовая точка слева, 2 - в середине, 3 - справа, (7) - тип текста: 0 - простой, 1 - жирный, 2 - наклонный, 3 - жирный-наклонный. Эти семь значений не сохраняются, поэтому их необходимо задавать перед каждым вызовом команды. Кроме того, имя шрифта (фонта) необходимо задать в \Tf1 f2. И последнее - в переменной H необходимо задать вертикальный размер пересчета координат, вертикальная координата отсчитывается снизу вверх. Сама строка текста должна быть напечатана непосредственно перед вызовом команды. Используются переменные: C,H,f1,f2,r(1)-r(7),t() Пример применения команды:
# H=600; s(3)=99001; #pri Tahoma\E # f1=s(4); f2=s(5);
#d 7 r(1) 100 100 0 30 247 1 3 #pri Привет всем !\E ##text