книги из ГПНТБ / Оперативные графические системы в автоматизации проектирования
..pdfпрограммы с этой точки в конце подпрограммы записыва ется команда ВОЗВР. Команда ПОВТ используется для регенерации. Изменение координат точки в команде 100) приводит к сдвигу части изображения — квадрата, кото рый описан подпрограммой, содержащей команды отно сительного перемещения луча. Обход команды обраще ния к подпрограмме 103) с помощью команды безуслов ного перехода 102) позволяет стереть изображение треугольника (рис. 5.8, в).
Рассмотрим принципы отображения информации о модели.
В ОГС индикатор является окном, через которое пользователь видит изменение проектируемого объекта. Он может по желанию указывать системе ту часть объ екта, которая его интересует, выбрать проекцию, мас штаб, точку зрения на объект.
При наличии в ОГС двух уровней представления информации о проектируемом объекте — структуры дан ных модели (см. главу 1) и массива команд отображе ния— большое значение для характеристик системы имеют принципы преобразования информации при вы воде.
Такое преобразование может иметь вид компиляции модели в МКО. Программы просмотра и выделения ис пользуются при этом для сканирования структуры дан ных. Полученная геометрическая информация преобра зуется с учетом заданного пользователем поворота, пе реноса и масштабирования программами трансформации. На следующем этапе выделяется часть изображения, ле жащая внутри границ экрана или его чертежной поверх ности, и удаляются невидимые линии. Программы-гене раторы кодов ГП используются для получения результи рующего массива команд отображения.
Существуют ОГС [13, 14], в которых трансформация изображения выполняется специализированными аппа ратурными блоками, использующими простоту и однотип ность матричных операций. В таких системах использу ется метод непосредственной интерпретации структуры данных, хранимой в памяти ЭВМ. При этом ГП в каж дом цикле регенерации сканирует модель и прямо интер претирует содержащуюся в ней графическую информа цию (геометрические величины, дополнительную тек стовую и размерную информацию н т. п.) с учетом
150
100) |
ТЧК 250; 750 |
|
-Подпрограмма «квадрат» |
||||||
|
200) |
|
ПР |
50; |
0 |
|
|||
101) |
ИП |
200------------ |
|
|
|
||||
|
201) |
|
ПР |
0; |
50 |
250,75□ С |
|||
102) |
ТЧК 250; 2 5 0 ^ |
|
|
||||||
|
202) |
|
ПР — 50; |
0 |
|||||
|
|
|
|
|
|||||
|
|
|
|
203) |
|
ПР |
0; —50 |
||
103) |
ИП |
300 — |
— 204) |
|
ВОЗВР |
|
|
||
|
|
|
|
|
|
|
|||
104) |
ТЧК 750; 250 |
|
Подпрограмма треугольник» |
||||||
105) |
ИП |
300---- |
|
300) |
ПР |
50 |
|
|
|
106) ПОВТ—« — |
|
301) ПР —50 |
|
|
|||||
|
|
|
|
302) |
ПР |
0 |
|
|
|
|
|
|
|
.303) |
ВОЗВР |
250,250 750,250 |
|||
|
|
|
|
в |
|
|
|
|
|
■^100) |
ТЧК |
500; 750 |
I*—Подпрограмма «квадрат» |
||||||
|
200) ПР |
50; |
0 |
|
|||||
101) |
ИП |
200 --------------- |
201) |
ПР |
0; |
50 |
|
||
—102) |
И |
104-е----------1 |
902) |
ПР |
—50; |
0 |
|
||
103) |
ИП |
300 |
|
203) ПР |
0; |
— 50 |
&------ |
||
И 04) |
ТЧК |
750; 250 |
1------204) |
ВОЗВР |
|
|
500,750 |
||
|
|
|
-=>- Подпрограмма «треугольник» |
||||||
105) |
ИП |
300— |
|
300) |
ПР |
50; |
0 |
|
|
|
301) |
ПР |
—50; |
50 |
|
||||
|
|
|
|
|
|||||
106) |
ПОВТ -е -------------------- |
302) |
ПР |
0; —50 |
|
||||
303) |
ВОЗВР |
|
|
750,250 * |
|||||
|
|
|
|
|
|
|
|
|
Рис. 5.8. Пример программы ГП с использованием расширенного набора команд
установленных пользователем н управляющими програм
мами |
параметров |
трансформации. |
Блоки |
графической |
|||||||
информации |
в |
структуре |
данных |
связаны |
между |
||||||
собой |
|
командами |
перехода, |
так |
что при сканирова |
||||||
нии ГП |
выполняет |
непрерывную |
последовательность |
||||||||
команд |
отображения. |
Если |
очередной |
выбранный |
|||||||
процессором |
элемент |
данных |
несет |
информацию |
|||||||
негеометрического |
характера, |
происходит |
прерывание |
||||||||
на |
уровень |
|
графического |
|
супервизора, |
который |
|||||
интерпретирует |
эту |
информацию и производит ариф |
|||||||||
метические или логические |
операции, реализует перехо |
ды по условию, циклы и другие негеометрические дейст вия. Это позволяет учитывать в качестве параметров графических подпрограмм содержимое вводных регист ров пульта, выполнять непрерывное вращение изображе ния и т. п. [15].
5.5. ОРГАНИЗАЦИЯ ОПЕРАТИВНОГО ВВОДА ИНФОРМАЦИИ
Ввод графической информации. Характерным для че ловеко-машинных систем является полуавтоматический принцип ввода графической информации, при котором пользователь системы визуально оценивает и контроли рует вводимые данные, вводит дополнительную сопро вождающую информацию (о типе элемента, операции над ним и т. п.). Такой принцип исключает необходимость в программном распознавании образов, присущую автома тическим средствам ввода, позволяет за счет оперативно го отображения вводимой информации и контроля опе ратора корректировать ошибки кодирования на началь ном этапе.
В ОГС вводимые данные используются в качестве параметров графических и вычислительных процедур и могут служить для указания на элемент изображения в процедурах геометрических и структурных преобразова ний (повернуть элемент, стереть элемент и т. п.), задания координат точки, которые могут интерпретироваться как в геометрическом смысле, так и задавать абстрактные числовые параметры [16].
Задача указания на элемент состоит в определении соответствующего ему блока в модели объекта. При этом, кроме графической, необходима дополнительная
152
информация об уровне иерархии, которому принадле жит элемент. Так, например, точка изображения может задавать различные элементы, частью которых она является: прямую, резистор R, цепь RC, усилительный каскад.
В качестве информации, указывающей на элемент, устройство ввода графической информации (УВГИ) может передавать адрес команды ГП, вызывающей его отображение. Для установления соответствия между элементами нижнего уровня модели («прямые», «дуги», «точки»,...) и командами отображения используют табли цу связи (ТС) со строками вида «адрес команды отобра жения— адрес элемента модели», которая вырабаты вается при компиляции модели одновременно с МКО. Переход к элементу необходимого уровня осущест вляется за счет ассоциативных связей элементов. В си стемах с интерпретацией модели графическим процессо ром адрес указанного с помощью УВГИ элемента опре деляется непосредственно в процессоре.
Элемент может быть задан координатами принадле жащей ему точки. Обычно при этом используется яркост ная отметка — маркер, которую пользователь визуально совмещает с нужной точкой изображения. УВГИ пере дает программе координаты маркера (Хм, Уы). Для на хождения указанного маркером элемента необходим сплошной программный перебор координат точек (Xi, У,), принадлежащих изображению, и проверка их совпа дения с координатами маркера:
(|Xt- X M| < 8)A (| У; - У м | < е ) ,
учитывающая погрешность е совмещения маркера с изо бражением.
Задача ввода координат произвольной точки экрана может решаться с помощью УВГИ, использующих прин цип временного совпадения, что требует значительных аппаратурных или программных затрат на слежение за световым пером пли вывод растра. Целесообразнее определять координаты точки за счет подвода к ней автономно упра!Вляемого маркера. Возникающая при этом возможность программной реализации некоторых функций ввода позволяет упростить и удешевить аппа ратуру УВГИ без существенного снижения характери стик ОГС.
153
В качестве примера рассмотрим программно-аппара
турный |
способ ввода |
координат, |
применяемый в |
|||
системе |
[9] |
(рис. 5.9). |
При отклонении ручки мпогопо- |
|||
змционного |
ключа |
код |
направления КОДНАПР запо |
|||
минается в буферном |
регистре РКП. |
Таймер вызывает |
||||
периодические обращения |
к программе продвижения |
|||||
маркера |
(рис. 5.10), |
которая вводит код направления и |
в зависимости от его значения корректирует содержимое ячеек текущих координат маркера (A, Y) . В соответст вии с этими координатами программа модификации мас-
Сигнал „Конец подвода“
Рис. 5.9. Схема программно аппаратурного способа пиода координат
154
|
С |
Начало |
3 |
|
|
|
|
|
|
|
|
Ввести |
КОД НАПР |
|
|
|
|
|
|
|
_______ |
|
1 |
|
Ля |
|
|
|
|
( |
Есть признак конца подвода ? |
|
|
|
|
||||
|
|
|
|
|
|||||
С |
|
|
1//ест |
|
|
|
|
|
|
Ли?НАПР=0 .//ест |
|
/to J НАПР=СЕВЕР |
|
-.Нет |
УМ-'=У |
|
|||
Ла |
Ла |
|
jAa |
|
' |
|
|
||
|
|
|
У +Д > У тал |
'У |
|
|
|
||
|
|
|
|
Г Исключить |
|
||||
|
|
|
|
jHcm |
|
I |
|
||
|
|
|
|
У : = У + Д |
|
I |
команду |
I |
|
|
|
|
|
Г |
|
|
. „Чертить мар-1 |
||
|
|
|
|
|
Нет |
Q |
кер“ из MKD |
| |
|
|
|
|
( |
Код НАПР = ЮГ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Ла. |
ТД<Г |
|
|
|
|
|
|
|
|
У - д < 0 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
У: = У-Д |
|
|
|
|
|
|
|
|
|
о . |
|
.//ест |
|
|
|
|
|
|
(ко д НАПР = ВОСТОК |
|
|
|
|||
|
|
|
|
|
|
|
|||
|
|
ла |
--------- ал? |
|
. |
|
|
|
|
|
|
|
|
Х+Д > X m a x > |
|
|
|
'♦ нет
|
X:=Х +Д |
1 |
|
<( Код НАПР= ЗАПАД |
Ч//е/7? |
||
Ла |
£Да |
У |
|
х -д < О |
|||
|
\нет~
Х:=Х-Д |
кзТ:_пЬ
Сформировать команду „ Чертить маркер
6 мко
с |
щ |
г — |
Коней, |
3 |
Рис. 5.10. Алгоритм программы продвижения маркера
сива команд отображения формирует команду вычерчи вания маркера в точке (A', У), которая затем выпол няется г-рафшчеоким процессором ГП. Отклонение ручки
MiHопопоз11цIюнного |
ключа в определенном направлении |
|
вызывает |
периодическое сложение соответствующей ко |
|
ординаты |
маркера |
с приращением Д, т. е. движение |
маркера |
по экрану |
в заданном направлении с постоян |
ной скоростью. Для |
удобства оператора в системе пре |
дусмотрены две скорости: для грубого и точного подвода
маркера; соответствующие им значения Д задаются пе |
|
реключателем |
пульта (на схеме управление скоростью |
не показано). |
После подвода маркера в нужную точку |
пользователь |
сообщает об этом программе сигналом |
«Конец подвода», после чего текущие значения коорди нат маркера могут попользоваться в качестве парамет
ров Лм, У„ в других |
процедурах. |
Поле |
перемещения |
|||
маркера |
ограничено |
прямоугольником |
(0, |
j max; |
||
О, Ушах) • |
|
|
|
|
|
|
Ввод символьной |
информации. |
Символьная |
форма |
|||
представления информации является |
наиболее универ |
|||||
сальной. |
В такой форме пользователь |
может |
вводить |
числовые данные (параметры процедур), текстовую ин формацию (надписи, комментарии, имена программ и файлов п т. п.).
Символьная информация с пульта пользователя вво дится либо устройствами чтения с носителя (перфокарт, перфолент), либо с помощью клавиатур. Первый способ удобен при вводе больших массивов данных, но требует предварительной подготовки носителей (перфорации). Для оперативного ввода символьной информации в ЭВМ обычно используют стандартную клавиатуру телетайпа или электрофицированной пишущей машинки. При орга низации диалога с помощью такой клавиатуры необхо димо реализовать следующие возможности: оперативное отображение вводимой информации на экране для конт роля пользователем; редактирование вводимой после довательности символов, исправление ошибок; получение протокола.
Накопление вводимых символов сообщения, их ото бражение и редактирование могут осуществляться аппа ратурой пульта пользователя. Для этого она должна содержать буферные регистры и логические схемы, реа лизующие алгоритмы редактирования и управления.
156
Программная реализация ввода представляет интерес с точки зрения экономичности и гибкости системы.
Рассмотрим систему ввода, имеющую четыре режима: «Накопление», «Удалить символ», «Вставить символ», «Заменить символ». Основным является режим «Накоп ление». При нажатии на клавишу в этом режиме проис
ходит ' прерывание |
текущей |
программы. Код клавиши |
||
вводится в ЭВМ и запоминается |
как последний элемент |
|||
А [/г] стека символов с адресом, |
равным текущему зна |
|||
чению указателя |
стека /г. |
Указатель |
наращивается |
|
п : — /г+1. На экран выводится строка |
символов, соот |
|||
ветствующая стеку Л[1 : п]. |
Сообщение набирается при |
последовательном вводе символов. После нажатия кла виши, которая интерпретируется как «конец сообщения», символы сообщения передаются программе обработки, а стек накопителя считается пустым п : = 0 . Если в про цессе набора сообщения замечена ошибка, строчку мож но скорректировать в одном из трех режимов редактиро вания.
Рассмотрим работу используемых при этом процедур редактирования.
Процедура «Удалить символ». Адрес удаляемого символа в стеке задается пользователем с помощью указательного маркера. Пользователь подводит маркер к нужному символу последовательными нажатиями на клавишу «продвижение». При этом пропрамма продви гает маркер вдоль строчки, наращивая счетчик i. Нажа тием на клавишу «конец подвода» пользователь сооб щает программе, что маркер подведен к символу /4[£], который необходимо удалить. При удалении символа Л[£] адреса символов А [1]-ь4 [/—1] не изменяются, сим волы A [ t + 1] -f-A [я—1] сдвигаются в стеке на одну пози цию влево, начиная с А[£-}-1]:
A[i]: = A[i -!- 1]; A[i -\- \] \ = А [£ -|- 2];
А [п — 2]: = А [ п — 1].
Указатель стека уменьшается на единицу:
п : = п — 1.
Скорректированная строчка выводится на экран. .
157
Процедура «Вставить символ». С помощью маркера пользователь задает адрес i символа, после которого необходимо сделать вставку. Символы Л[/+1]-ь/1[д—1] сдвигаются в стеке на одну позицию вправо, начиная с Л [/г-1]:
А [/г]: = А [п — 1];
/1 [ п — 1]: = А [ п — 2];
е................................................................................
|
A [ i + 2 ] : |
= A [ i |
+ |
l}. |
|
|
Увеличивается на единицу указатель стека: |
|
|||||
|
п : = |
|
|
|
|
|
Вставляемый |
символ |
записывается |
в стек по адресу |
|||
i+ l. Скорректированная строчка |
выводится на экран. |
|||||
Процедура «Заменить символ». По адресу указанно |
||||||
го маркером |
символа Л[/'] |
в стек |
записывается |
вновь |
||
введенный символ. Адреса |
остальных символов и указа |
|||||
тель стека не изменяются. |
Скорректированная строчка |
|||||
выводится на экран. |
символьных |
сообщений |
часто |
|||
При вводе |
коротких |
|||||
необходимо |
скорректировать только |
последний введен |
ный символ. С этой целью можно организовать упрощен ную систему ввода, которая не требует задания адреса символа, а всегда оперирует с последним символом стека
( i = n — 1).
Для случаев, когда ошибка замечена не в последнем символе, удобны следующие способы редактирования: удалить всю строку символов; последовательно удалять символы, начиная с последнего А [/г—1] и кончая оши бочным А [£].
Рассмотрим алгоритмы процедур, реализующих ввод
иредактирование коротких сообщений.
Впроцедуре «Ввод с возможностью удаления послед него символа и всей строки» используются две выделен ные клавиши алфавитно-цифровой клавиатуры для ввода признаков «удалить» п «конец ввода». При наборе на клавиатуре последовательности символов строки соот
ветствующие им коды накапливаются в стеке А [ 1 : п]. При нажатии на клавишу «удалить» уменьшается указа тель стека (а : = п —1). Если клавиша «удалить» нажа та два раза подряд, то стек очищается (п : =0), что соот
158
ветствует стиранию строки. По клавише «конец ввода-» стек символов и указатель стека передаются обрабаты вающей программе, выполнение процедуры ввода закан чивается.
В процедуре «Ввод с возможностью многократного удаления последнего символа» используются клавиши «удалить» и «конец ввода». Последовательность введен ных символов накапливается в стеке. Каждое нажатие на клавишу «удалить» уменьшает указатель стека /г: =
= п—1, если п ф 0.