ПОИСК Статьи Чертежи Таблицы Моделирование графических объектов блоками данных из "Машинная графика и автоматизация проектирования " например, на экране требуется изобразить разного типа многоугольники, которые должны быть описаны блоками данных. Начнем с того, что изучим блок данных для треугольника, а затем посмотрим, как такой отдельный блок связан с общей структурой. После этого ознакомимся с блоком данных, которые необходимы для рещения таких задач, как вычисление площади многоугольника, определение длины некоторой стороны и т. п. [c.93] Блоки данных для многоугольников с большим числом сторон имеют подобный формат, но соответственно большее число строк. [c.93] Теперь посмотрим, как проследить за размещением блоков данных в оперативной яамяпи, как такие блоки генерируются и как их можно использовать для вычислений. При этом будем предполагать, что для хранения блоков данных выделена специальная область памяти. По мере генерации блоков они записываются в эту память подряд без пустых промежутков. Случай, когда блоки данных записываются в память не подряд, рассматривается в дальнейшем при обсуждении структур данных. [c.93] Теперь посмотрим, как генерируются блоки данных, как программа может их ин-терпретиро1вать при вьшол-нении вычислений и какие операторы можно выполнять над объектами, которые (Представлены своими блока-ми данных. [c.94] Совершенно аналогичные подпрограммы используются для четырех-и пятиугольников с учетом дополнительных строк в блоках данных, соответствующих даполнительным сторонам. [c.94] Прежде всего программа проверяет содержимое ячейки 100— идентификатор первого блока, чтобы определить его тип. Если первый объект—треугольник, программа заносит адрес первого блока в список, пропускает шесть ячеек и анализирует идентификатор следующего блока и т. д. [c.95] Если анализируемый блок описывает не треугольник, то программа пытается выяснить, не имеем ли мы дело с четырех- или пятиугольником. Это нужно знать для того, чтобы определить, сколько слов необходимо пропустить, с тем чтобы считать идентификатор следующего блока данных. Такой процесс продолжается до тех пор, пока анализ не дойдет до пустого блока, и это будет означать, что данные об изображении на экране кончились. Результатом работы такой программы будет список адресов блоков всех треугольников, изображенных на экране. [c.95] Когда изображение на экране содержит несколько объектов, часто озникает необходимость выбрать один из них для некоторых вычислительных или прочих манипуляций. Одним из способов такого выбора -является помещение следящего перекрестья непосредственно на какую-нибудь линию выбранной фигуры или вблизи нее. Это делается с целью определить адрес блока выбранной фигуры, а возможно, и идентифицировать выбранную сторону. [c.96] Если следящее перекрестье не оказалось близко ни с одной стороны треугольника, ЭВМ переходит к следующему блоку данных. При этом в каждом блоке прежде всего определяется идентификатор типа для того, чтобы в дальнейшем анализировать отдельные стороны изображения. [c.97] После того как ЭВМ закончила процесс выборки, пользователь получает возможность производить с выбранным изображением любые операции. Так как в блоке данных содержится полное геометрическое описание данного изображения, он может, например, вычислить его площадь, длину выбранной стороны и другие параметры. [c.98] Описанная процедура выбирает из дисплейного списка первое же изображение, сторона которого в пределах данного допуска лежит близко к следящему перекрестью. Выбранное изображение после этого может быть выделено для визуальной проверки яркостью линий или мерцанием на экране. Если такая проверка показывает, что выбор произошел ошибочно, можно повторить процесс, вновь перемещая следящее перекрестье (это часто оказывается полезным, когда экран перегружен изображениями). [c.98] Выше описывались процедуры использования флага светового пера для выявления нажатия на световую кнопку при управлении ветвлением программ. Точно так же можно рассматривать как световую кнопку всякую линию или элемент изображения на экране. Тогда их можно использовать для выбора изображения, не прибегая к помощи следящего перекрестья. Однако при сложных изображениях становится, практически невозможно помещать точку ветвления программы после каждого дисплейного слова, представляющего отдельный элемент изображения. В некоторых ЭВМ эта проблема решается с помощью аппарата специальных ссылок — обратных указателей при каждом слове в дисплейном списке. Такая ссылка указывает адрес начала блока, в котором это слово содержится. При воспроизведении на экране каждого элемента изображения во время выполнения команды соответствующее слово с указателем-ссылкой сохраняется в специальном регистре. Когда световое перо указывает на такой элемент, это слово считывается из регистра и используется программой для нахождения породившего данный элемент блока. После этого найденный блок можно как угодно анализировать. [c.98] Описанный метод нахождения блока данных, соответствующего указанному элементу изображения, эквивалентен рассмотренному выше методу с использованием следящего перекрестья. Метод указания световым пером характерен своим быстродействием, тогда как работа с перекрестьем требует последовательного поиска, занимающего много времени, и анализа блока данных. В то же время для метода указания световым пером нужно выделение специальной области памяти для обратных указателей — ссылок. Кроме того, пользуясь следящим перекрестьем, можно выбирать элемент изображения вообще без светового пера перекрестье можно перемещать по экрану, пользуясь аналоговыми устройствами типа управляющей рукоятки или мышки . [c.98] Пусть для упрощения опорная точка изображения (обычно никак не выделяемая) обозначена ярче и может быть замечена. Тогда, чтобы указать новую позицию, которую должно занять изображение, оператор перемещает перекрестье относительно опорной точки. После этого координаты опорной точки изображения, записанные в ячейке с адресом, равным адресу блока -Ь11. заменяются координатами перекрестья. Таким образом, изменения позиции изображения на экране находят свое отражение в блоке его данных. После обновления дисплейного списка изображение появится на экране в новой позиции. [c.99] В тех случаях, когда нет необходимости в большой гибкости блоков данных, можно для представления элементов фигур использовать в качестве дисплейного списка обыкновенные массивы. Пусть применяются только отрезки прямых, которые желательно располагать систематическим методом последовательной выборки для их воспроизведения на экране либо для других операций. Тогда можно воспользоваться нред-ставлением этих отрезков массивами координат, как это показано на рис. 76. [c.99] Вернуться к основной статье