Программа MNMX(VX,VY,VZ,X,Y,A,LLX,LLY,LXINI,LXE,LYIN,LYE,S) служит для задания пределов изменения изображаемой функции на картинной плоскости. Пределы устанавливаются либо для всей области задания функции, либо для некоторой ее прямоугольной подобласти. Обращение к программе может быть как до, так и после вызова программы REGION. Установленные пределы сохраняются до очередного обращения к программе MNMX. Программа имеет следующие параметры:
- VX,VY,VZ
- координаты центра проекции в системе координат XYZ;
- X,Y
- координаты точек сетки по осям X и Y, расположенные в порядке возрастания;
- A
- значения функции в узлах сетки (двумерный массив размером (LLX,LLY));
- LLX,LLY
- размеры сетки по осям X и Y;
- LXINI,LXE
- индексы сетки по оси X, определяющие левую и правую границы подобласти;
- LXINI > 0 - в области рисования, определенной обращением к программе REGION, устанавливаются найденные для данной функции пределы,
- LXINI < 0 - в области рисования устанавливаются пределы, общие для пределов изменения данной функции и пределов, полученных при предыдущих обращениях к программе MNMX;
- LYIN,LYE
- индексы сетки по оси Y, определяющие нижнюю и верхнюю границы подобласти;
- S
- коэффициент, определяющий форму математической области значений функции на картинной плоскости: он равен отношению (XMAX-XMIN) / (YMAX-YMIN), где XMAX, XMIN, YMAX, YMIN - пределы изменения функции, устанавливаемые в области рисования.
Замечание. При обращении к программе MNMX надо следить, чтобы центр проекции не попал на поверхность изображаемого объекта.
Программа PRSP(VX,VY,VZ,X,Y,A,LLX,LLY,LXINIT,LXEND,LYINIT,LYEND,XF1,YF1,RMAX,RMIN,NN) позволяет построить в области рисования центральную проекцию всей заданной поверхности либо ее некоторого участка с удалением невидимых линий. Программа имеет следующие параметры:
- VX,VY,VZ
- координаты центра проекции в системе координат XYZ;
- X,Y
- координаты точек сетки по осям X и Y, расположенных в порядке возрастания;
- A
- значения функции в узлах сетки (двумерный массив размером (LLX,LLY));
- LLX,LLY
- размеры сетки по осям X и Y;
- LXINIT,LXEND
- индексы сетки по оси X, определяющие левую и правую границы проецируемого участка поверхности;
- LXINIT > 0 - перед рисованием экран инициируется, т. е. старое значение его, оставшееся от предыдущих обращений к программе PRSP, уничтожается;
- LXINIT < 0 - рисование осуществляется с учетом экрана, оставшегося от предыдущих обращений к программе PRSP;
- LYINIT,LYEND
- индексы сетки по оси Y, определяющие нижнюю и верхнюю границы проецируемого участка поверхности;
- LYINIT > 0 - перед изображением проецируемого участка поверхности или каждой из его частей, полученных при разбиении в случае неуглового положения центра проекции, происходит инициализация экрана;
- LYINIT < 0 - рисование выполняется с учетом экрана, оставшегося от изображения предыдущих участков поверхности или их частей, полученных при разбиении (это дает возможность получить полное значение экрана от всего проецируемого участка поверхности независимо от положения центра проекции);
- XF1,YF1
- рабочие массивы длины соответственно 2 ´ LLX и LLX, предназначенные для запоминания X- и Y- компонент координат точек сетки, расположенных вдоль оси X;
- RMAX,RMIN
- массивы, используемые для хранения верхней и нижней границ экрана (они должны иметь длину не менее NN);
- NN
- число делений физической сетки на области рисунка (т. е. размер экрана).
Замечания.
1) Eсли при изображении нескольких проекций поверхностей с учетом того, что они могут закрывать друг друга, центр проекции находится в угловом положении относительно первой поверхности, то при обращении к программе PRSP для первой поверхности знак LYINIT безразличен.
2) При обращении к программе PRSP надо следить, чтобы центр проекции не попал на поверхность изображаемого объекта.
Программа PRJT(VX,VY,VZ,X,Y,A,LLX,LLY,LXIN,LXE,LYIN,LYE,XF1,YF1) позволяет построить в области рисования центральную проекцию всей заданной поверхности либо ее некоторого участка без удаления невидимых линий. Параметры программы следующие:
- LXIN,LXE
- индексы сетки по оси X, определяющие левую и правую границы проецируемого участка;
- LYIN,LYE
- индексы сетки по оси Y, определяющие нижнюю и верхнюю границы проецируемого участка;
Остальные параметры имеют то же значение, что и в предыдущей программе.
Замечание. При обращении к программе рисования PRJT надо следить, чтобы центр проекции не попал на поверхность изображаемого объекта.
Bспомогательные и служебные программы.
Программа MAP(X,Y,Z) по заданным координатам точки в декартовой системе координат позволяет определить координаты проекции этой точки на картинную плоскость. Bычисленные координаты XP, YP помещаются в общий блок GFVP, описываемый как
COMMON /GFVP/ V1,V2,V3,XP,YP,INFIN.При этом параметр INFIN является признаком, определяющим, попадает ли данная точка поверхности в конус зрения (INFIN = 0 - попадает, INFIN = 1 - лежит за его пределами).
Программа CORNL(LXI1,LX1,LYJ1,LY1,K1,M1,K2,M2,X,Y,A,LXX,LYY,XF1,YF1,RMAX,RMIN) позволяет построить центральную проекцию части поверхности (задаваемой первыми четырьмя параметрами), относительно которой центр проекции имеет угловое положение. Построение производится с удалением невидимых линий. Параметры K1, K2 определяют координаты ближайшего к центру проекции угла проецируемой части поверхности, а M1,M2 задают порядок перебора элементов соответственно строк и столбцов рассматриваемой части поверхности (от начального элемента к конечному или от конечного к начальному). Остальные параметры имеют те же значения, что и в программе PRSP.
Программа PATCH(XF1,YF1,RMAX,RMIN) служит для построения на картинной плоскости проекции одного элемента изображаемой части поверхности с удалением невидимых линий.
Программа SEARCH(IX1,Y1,IX2,Y2,XF1,YF1,RMAX,RMIN) предназначена для обработки частично видимых ребер элементов поверхности (первые два параметра задают видимую конечную точку ребра, а вторые два - невидимую). C этой целью на физической сетке ищется первая видимая точка ребра, после чего изображается отрезок, соединяющий видимую конечную точку с найденной точкой. (Параметры IX1,IX2 определены на физической сетке, введенной в области рисования, поэтому их значения - целые числа).
Программа INTRSC(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X0,Y0) позволяет найти точку пересечения (X0,Y0) двух отрезков, заданных координатами конечных точек.
Программа BUFL(IX1,Y1,IX2,Y2,RMAX,RMIN) запоминает информацию о видимой части заднего ребра каждого элемента поверхности и после полного просмотра элемента модифицирует экран.
Программа LININT(JX1,Y1,JX2,Y2,RMAX,RMIN) позволяет линейно интерполировать функции RMAX или RMIN (возможно обе) между двумя заданными точками (JX1,Y1) и (JX2,Y2). При этом новые значения заносятся в RMAX (RMIN) только в том случае, если они больше (меньше) старых.