/******************************************************************** Заголовочный файл для пакета графических программ GREC *********************************************************************/ #ifndef _GREC_ extern int grec_disp_flag; /*** Ненулевое значение этой переменной дает "болтливый" библиотеку, нулевое - "молчаливую". По умолчанию grec_disp_flag = 1. ***/ #define RF_ 1 #define RF_Border 2 #define RF_IdRatio 4 #define AF_ 1 #define AF_AutoStep 2 #define AF_NoBigMk 4 #define AF_NoDigits 8 #define AF_ChrUp 16 #define AF_ChrDn 32 #define AF_NoSmMk 64 #define AF_TxtUp 128 #define AF_TxtDn 256 #define AF_ChrLft 512 #define AF_ChrRgt 1024 #define AF_TxtRgt 2048 #define AF_TxtLft 4096 #define LX_ 0 #define LX_Txt 1 int absciss(int n, double yab, double step, int nsm, char* txt, char col, int flag); /*** Процедура построения оси абсцисс. n - номер области. yab - ордината оси абсцисс. step - шаг разбиения по оси абсцисс (математические координаты). Если значение этой переменной равно нулю, то производится автоматический выбор разбиения. nsm - количество дополнительных (малых) делений по оси. Если значение этой переменной отрицательно или равно единице, то дополнительные деления отсутствуют. Если значение переменной равно нулю, то количество переменных выбирается автоматически. txt - указатель на текст для надписывания оси. col - цвет оси. flag - переменная, определяющая режим построения оси. Режимы могут включаться независимо, объединяясь по двоичному "или" (|): AF_ - режим "по умолчанию" AF_AutoStep - принудительное включение автоматического выбора шага разбиения (независимо от значения перемен- ной step) AF_NoBigMk - отсутствие разметки осей (включение этого режима не отменяет надписывания оси переменной *txt) AF_NoDigits - разметка осей производится, но отсутствует над- писывание больших делений цифрами AF_ChrUp - принудительное надписывание больших делений сверху оси AF_ChrDn - принудительное надписывание больших делений снизу оси AF_NoSmMk - принудительное отключение разметки оси дополнитель- ными делениями (независимо от значения переменной nsm) AF_TxtUp - принудительное помещение надписываемого текста выше оси AF_TxtDn - принудительное помещение надписываемого текста ниже оси ***/ int close_page(void); /*** Процедура закрытия страницы. ***/ int line(int n, double x1, double y1, double x2, double y2, char col); /*** Процедура построения отрезка по математическим координатам. n - номер области. x1, y1 - координаты первого конца отрезка. x2, y2 - координаты второго конца отрезка. col - цвет отрезка. ***/ int lineo(int n, double* xmass, double* ymass, int n1, int n2, char col); /*** Процедура построения ломаной по координатам ее вершин. n - номер области. xmass, ymass - указатели на нулевые элементы массивов содержащих координаты вершин ломаной. n1, n2 - номера первого и последнего отображаемых вершин ломаной, n1 < 0 или n2 < 0, то отображаются только вершины ломаной. col - цвет ломаной. ***/ int lineox(int n, double* xmass, double* ymass, int n1, int n2, char col, int flag, char* txt); /*** Процедура построения ломаной по координатам ее вершин с возможностью вписывания строки текста в разрыв линии. n - номер области. xmass, ymass - указатели на нулевые элементы массивов содержащих координаты вершин ломаной. n1, n2 - номера первого и последнего отображаемых вершин ломаной. col - цвет ломаной. flag - флаг вписывания текста в разрыв: LX_ - вписывание не производится LX_Txt - вписывание производится txt - указатель на строку текста с вписываемым текстом. ***/ int mark(int n, double x, double y, char marker, int size, char col); /*** Процедура построения маркера по математическим координатам. n - номер области. x, y - координаты вершин центра маркера. marker - вид(номер) маркера, в настоящей версии возможные номера: 1,2. size - размер маркера (в физических координатах). col - цвет маркера. ***/ int open_page(char* file_name, char* page_name); /*** Процедура, открывающая страницу и файл графического изображения. Если к этому времени уже была открыта страница, то она закрывается. file_name - указатель на строку, содержащую имя файла для записи гра- фической информации. Если задается расширение .eps, .EPS, .ps или .PS, то происходит запись файла в формате PostScript. В другом случае происходит запись файла в формате .gi (для таких файлов рекомендуется задавать расширение .gi). Если задается расширение .EPS или .PS, то цвета выделяются только толщиной линий и цветом. В случае задания расширений .eps или .ps цвета выделяются толщиной и оттенками серого. Если задано расширение .eps или .EPS, то выводится файл, подготовленный для вставки в LaTeX. Если задано расширение .ps или .PS, то выводится файл, подготовленный для печати на принтере. Удалив одну строку можно преобразовать этот файл в формат, пригодный для вставки в LaTeX. page_name - указатель на строку, содержащую название рисунка. Строка должна иметь длину не более 40 символов. ***/ int ordinate(int n, double xab, double step, int nsm, char *txt, char col, int flag); /*** Процедура построения оси ординат. n - номер области. xab - абсцисса оси ординат. step - шаг разбиения по оси ординат (математические координаты). Если значение этой переменной равно нулю, то производится автоматический выбор разбиения. nsm - количество дополнительных (малых) делений по оси. Если значение этой переменной отрицательно или равно единице, то дополнительные деления отсутствуют. Если значение переменной равно нулю, то количество переменных выбирается автоматически. txt - указатель на текст для надписывания оси. col - цвет оси. flag - переменная, определяющая режим построения оси. Режимы могут включаться независимо, объединяясь по двоичному "или" (|): AF_ - режим "по умолчанию" AF_AutoStep - принудительное включение автоматического выбора шага разбиения (независимо от значения перемен- ной step) AF_NoBigMk - отсутствие разметки осей (включение этого режима не отменяет надписывания оси переменной *txt) AF_NoDigits - разметка осей производится, но отсутствует над- писывание больших делений цифрами AF_ChrLft - принудительное надписывание больших делений левее оси AF_ChrRgt - принудительное надписывание больших делений правее оси AF_NoSmMk - принудительное отключение разметки оси дополнитель- ными делениями (независимо от значения переменной nsm) AF_TxtLft - принудительное помещение надписываемого текста левее оси AF_TxtRgt - принудительное помещение надписываемого текста правее оси ***/ int region(int num, double x1, double y1, double x2, double y2, int flag, double xmin, double xmax, double ymin, double ymax); /*** Процедура открывающая область математического вывода. num - номер области, он должен лежать в диапазоне от 0 до 9. x1, y1 - физические координаты верхней левой точки области. x1, y1 - физические координаты нижней правой точки области. flag - флаг определяющий режим открытия области. Режимы могут вклю- чатся независимо объединяясь по двоичному "или" (|): RF_ 1 - режим "по умолчанию" RF_Border - изображение области в рамке цвета 1 RF_IdRatio - корректировка математических координат для дости- жения одинакового масштаба по обеим осям (чтобы круг в математических координатах изображался как круг, а не как эллипс) xmin - минимальная математическая координата по оси абсцисс. xmax - максимальная математическая координата по оси абсцисс. ymin - минимальная математическая координата по оси ординат. ymax - максимальная математическая координата по оси ординат. ***/ int symbol(char *text, double x, double y, char color); /*** Процедура размещения строки текста по физическим координатам. text - указатель на строку текста. x, y - координаты верхнего левого угла текста. color - цвет текста. ***/ double x_mathtopic(int n, double x); double y_mathtopic(int n, double y); /*** Вспомогательные программы для перевода координат точки из мате- матических в физические. n - номер области ***/ #define _GREC_ 1 #endif