8.2.3. Описание программ.

Программа 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) только в том случае, ес­ли они больше (меньше) старых.