Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CG_lk.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.22 Mб
Скачать

1.2.2 Текущее положение

Графические устройства строят видимое изображение, перемещая пишущий узел или орган (перо графопостроителя, электронный луч, лазерный луч и т.п.) по поверхности вывода. После вычерчивания очередного графического элемента пишущий узел остается в какой-то координате устройства. Это так называемое текущее положение пера, фиксируемое на видовой поверхности в координатном пространстве устройства. Зачастую ГП имеет аналогичную конструкцию, называемую текущим положением (ТП): ТП принимает значение, соответствующее текущему положению воображаемого пишущего органа в мировом координатном пространстве.

Для установки ТП в мировом координатном пространстве можно использовать вызов (PASCAL):

Procedure MoveTo (X, Y: Integer).

Текущее положение не отображается на видовой поверхности. В какой-то степени его можно отождествить с (невидимым) графическим курсором, однако следует помнить, что не все примитивы вывода перемещают текущее положение (см. например, модуль GRAF PASCAL).

1.2.3 Примитивы вывода и атрибуты.

В алфавитно-цифровых печатающих устройствах широко используется точечный принцип формирования букв. Аналогично любое графическое изображение может быть сформировано из точек. Чем меньше диаметр точек и чем меньше возможное расстояние между точками, тем качественнее изображение. В качестве примера может быть рассмотрен график Рис.1.2.

Для перемещения ТП и последующего задания индикации отдельной точки в новом ТП можно воспользоваться вызовом:

Procedure PutPixel (X, Y: Integer; Pixel: Word)

Рис.1.2. График - точечное представление

Примечание: В данном разделе использованы процедуры модуля GRAF PASCAL.

Учитывая это график Рис.1.2. требует 34 обращения к процедуре PutPixel. В тоже время, анализ графика показывает, что некоторые части графика могут быть аппроксимированы прямыми линиями. Для задания линии от ТП из которого начинается линия до точки, в которой она кончается может быть использована процедура

Procedure LineTo (X, Y: Integer);

где Х, Y - координаты конечной точки линии.

Используя рассмотренные процедуры MoveTo, PutPixel, LineTo запишем программу формирования графика Рис.1.3. (без учета формирования осей):

MoveTo(Xo, Yо)

LineTo(X1, Y1)

LineTo(X2, Y2)

LinеTo(X3, Y3)

LineTo(X4, Y4)

В данном случае используется только 10 обращений к процедурам вывода. Рассмотрим еще один пример. Пусть необходимо отобразить многоугольник (Рис.1.4).

Рис.1.3. Лианеризированный график

Изображение данного многоугольника может быть построено с использованием процедуры LINE:

MoveTo (Xo, Yо)

LineTo (X1, Y1)

LineTo (X2, Y2)

LineTo (X3, Y3)

LineTo (X4, Y4)

LineTo (Xо, Y )

Рис.1.4. Многоугольник

Изображение данного многоугольника может быть построено с использованием процедуры LINE :

MoveTo (Xo, Yо)

LineTo (X1, Y1)

LineTo (X2, Y2)

LineTo (X3, Y3)

LineTo (X4, Y4)

LineTo (Xо, Yо)

Однако, этот же объект может быть отображен и с помощью процедуры DrawPoly(NumPoints: Word; var PolyPoints).

MoveTo (Xo, Yо)

DrawPoly (6, Xo, X1; X2, X3; X4, Yо; Y1, Y2; Y3, Y4)

где Хi , Yi - координаты вершин,

6= (n+1) - число вершин.

Из приведенных примеров видим, что изображение может задаваться различными графическими элементами, причем длина программы в значительной степени зависит от сложности этих элементов. Будем понимать под термином “примитив вывода” базовый графический элемент, который может использоваться для построения изображения.

В большинстве применений требуется выводить не только графику, но и текст, т.е. цепочки литер. Текст может быть необходим для пояснений к графикам и для общения с пользователем.

Прикладная программа задает текст, вызывая имеющуюся в ГП процедуру ТЕХТ. Левый нижний угол буквы первой литеры задает положение цепочки литер на экране (в мировом пространстве). Величина букв, их взаимное расположение, ориентация могут задаваться атрибутами .

Поскольку положение первой литеры строго определено, перед вызовом ТЕХТ обычно производится вызов MOVE. Например, для графика температуры, показанного на Рис 1.5:

MoveTo(25,130);

SetTextStyle(DefaultFont, HorizDir, 1); {CharSize = 1}

SetTextJustify(LeftText, TopText);

OutText(Зона 5-го уровня стержня); {CP is updated}

OutText('DEF'); {CP is updated}

Рис.1.5. График с текстом

Базовые графические элементы, используемые для построения изображения, называют примитивами вывода [5]. В PASCAL и C используются такие примитивы вывода, как ТОЧКА, ЛИНИЯ (три варианта), прямоугольник, квадрат, окружность, эллипс, сектор, и др. (см. Приложение к данному разделу). Вид примитива определяется его параметрами: геометрическими и визуальными представлениями на видовой поверхности. Эти характеристики задаются набором атрибутов, связанных с примитивами.

Атрибут - характеристика примитива вывода, например, вид или цвет линии, расстояние между литерами и т.п. В приложении приведены атрибуты, используемые в PASCAL.

Таким образом, изображение можно рассматривать как совокупность графических примитивов, которые одновременно выведены на видовую поверхность.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]