Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия”




НазваниеКонспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия”
страница3/19
Дата публикации10.03.2013
Размер0.99 Mb.
ТипКонспект
uchebilka.ru > Информатика > Конспект
1   2   3   4   5   6   7   8   9   ...   19

1.2Программирование


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

Основная цель аппаратно-независимого пакета, используемого в сочетании с языком высокого уровня (FORTRAN, PASCAL, C) состоит в том, чтобы обеспечить мобильность прикладной программы при переходе с одной ЭВМ на другую и от одного графического устройства к другому.

Существенный шаг вперед сделан в середине 70-х годов с введением "Графической системы Core " [1], а затем группы "Графических стандартов ISO ", имеющих ядром стандарт GKS [6]. В настоящее время создано множество графических пакетов, среди которых могут быть отмечены такие пакеты как PAINTBRUSH, COREL DRAW и др. В состав языков высокого уровня (PASCAL, C) включены специальные графические модули, которые могут являться инструментом, как для создания прикладных графических пакетов, так и для создания отдельных графических подпрограмм.

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

^

1.2.1Координатные пространства



Чтобы получить изображение прикладная программа должна описать для графической системы различные выходные примитивы, указав их положение и размеры в прямоугольной системе координат. Эти координаты по своей природе являются безразмерными, поэтому прикладная программа может задавать объекты в единицах, которые являются естественными для данного приложения и для пользователя. Так, например, размеры детали могут задаваться в миллиметрах, графики изменения температуры во времени (секунды, минуты или часы). Эти прикладные координаты являются координатами пользователя. Поскольку они позволяют отображать объекты в двумерном или трехмерном мире пользователя, их называют мировыми координатами. ГОСТ 27459-87 определяет мировые координаты как "независимые от устройства декартовы координаты, используемые в программах пользователя для задания входных и выходных данных" [5]. Таким образом, объекты могут быть заданы в мировой системе координат как для хранения в прикладной модели, так и с целью описания для графического пакета (ГП). Мировые координаты задаются обычно системой счисления с плавающей запятой.

После того, как объекты описаны для графического пакета в виде совокупности выходных примитивов, ГП формирует изображение объектов на экране, отображая независимые от устройства мировые координаты на логическую систему координат - нормированные координаты, в которых видовая поверхность нормируется действительными числами от 0 до 1 как по координате Х, так и по координате Y. По ГОСТ 27459-87 это "координаты, заданные в промежуточной не зависимой от устройства системе координат и нормированные относительно некоторого диапазона, обычно от нуля до единицы" [5]. Изображение, выраженное в нормированных координатах, располагается в одних и тех же относительных позициях при визуализации на любое устройство. Начало координат (Х=0, Y=0) располагается в левом нижнем (верхнем) углу видовой поверхности.

И, наконец, физические координаты устройства - это координаты, зависящие от устройства и задаваемые в элементах изображения - пикселях (дисплей), миллиметрах (графопостроитель) и т.п.

^

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.

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

^

1.2.4 Видовые операции



Объекты, например графики, задаются в мировой системе координат, а ГП должен затем преобразовать мировые координаты в физические координаты дисплейного устройства. Для выполнения этого преобразования ГП должен знать, какая именно часть неограниченного мирового координатного пространства содержит информацию, которую пользователь хочет вывести в данный момент. Эта прямоугольная область в мировом координатном пространстве называется окном. Прикладная программа задает окно, вызывая процедуру, аргументы которой указывают границы окна по каждой из координатных осей:

WINDOW (Xmin, Xmax, Ymin, Ymax)

Любую часть изображения, не попадающую в окно, ГП делает невидимой с помощью операции называемой "отсечение": любой примитив, расположенный вне окна не отображается на экране, а примитив, частично попадающий в окно, отсекается по границе окна Рис.1.6. .



Рисунок 1.6- Окно и отсечение
Каждый примитив, задаваемый прикладной программой, проверяется на три возможных случая: полное размещение внутри окна - такой примитив должен быть полностью выведен на экран, пересечение с окном - примитив подвергается отсечению и на экране отображаются только части попадающие в границы окна, расположение полностью вне окна - примитив не подлежит выводу на экран. Изменение величины окна позволяет осуществлять произвольное масштабирование. Перемещая окно и выбирая большие или меньшие его размеры можно создать такие кинематографические эффекты, как панорамирование, крупный или мелкий план (трансфокация).

Рассматривая процедуру WINDOW, мы по умолчанию предполагали, что окно отображается на некоторую часть экрана - поле вывода, которое определим как прямоугольную часть экрана, на которую отображается окно.

На Рис.1.7. показан общий случай отображения окна на поле вывода. Процессы отсечения и отображения окна на поле вывода называют видовой операцией.

Прикладная программа задает поле вывода с помощью процедуры VIEWPORT. Как и при задании WINDOW в данный момент существует только одно поле вывода. Обращение к процедуре VIEWPORT имеет вид:

^ VIEWPORT (Xmin, Xmax, Ymin, Ymax).

Изображение образуется на основе графических данных, поступающих из прикладной программы. Эти данные могут быть результатом измерения или вычисления произвольных физических величин, таких как, например температура, вес, время и т.п. Вводя по точкам некоторый объект, мы получаем метрические данные. Численный анализ дает вообще безразмерные величины. Все эти разнообразные координаты пользователя необходимо преобразовать в единые координаты устройства, характеризующие видовую поверхность некоторого графического устройства.


Рисунок 1.7- Отображение окна на поле вывода
Для преобразования в ГП используется декартова система координат. Само преобразование заключается в сдвиге и масштабировании с положительными постоянными коэффициентами. Ранее уже указывалось, что для различных пользовательских координат принят единый термин "мировые координаты". Переход от мировых координат к координатам устройства осуществляется в два этапа.

Сначала мировые координаты отображаются на видовую поверхность абстрактного устройства в систему так называемых нормированных координат. Эта абстрактная видовая поверхность содержит независимое от устройства представление изображение. Данный промежуточный этап был введен для того чтобы четко разделить зависимые и независимые от устройства части описания изображения.

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

1.2.5 Относительные координаты


Предположим, что необходимо задать треугольник, используя процедуры MOVE, LINE (Рис.1.8).


Рисунок 1.8- Относительные координаты
MoveTo (10,10);

LINETo (40,35);

LINETo (30,0);

LINETo (10,10)
Допустим, возникает необходимость переместить треугольник в другое место, например на 30 единиц вправо по координате ^ X и 20 единиц вверх по координате Y.

Возможны два способа выполнения этой операции.

1. Прикладная программа находит треугольник в прикладной структуре данных, изменяет соответственно координаты вершин и вызывает графический пакет для создания новой дисплейной программы.

2. Прикладная программа выдает графическому пакету запрос на изменение сегмента дисплейной программы, который генерирует треугольник. Изменение заключается в вычитании 50 из всех координат X и прибавлении 100 по всем координатам Y .

Однако наиболее простой способ - это задание координат в абсолютных и относительных величинах. До сих пор мы пользовались абсолютными координатами - они задают абсолютную позицию в мировом координатном пространстве, т.е. позицию относительно начала заданной системы координат. Адекватно точка может быть задана в виде перемещений в мировом координатном пространстве от текущего положения или относительно некоторой другой точки. Определим относительные координаты как координаты, определяющие позицию адресуемой точки по отношению к некоторой другой адресуемой точке. Они могут быть заданы путем вызова таких процедур как MoveRel, LineRel.

При использовании относительных координат программа задания треугольника (Рис.1.8) будет выглядеть следующим образом:

MoveTo ( 10,10 );

LineRel ( 30,20 );

LineRel (-10,-35 );

LineRel (-20,10 );

В этом случае для перемещения треугольника необходимо создать новый сегмент, у которого изменена только одна абсолютная координата (10,10) на (40, 20).

1   2   3   4   5   6   7   8   9   ...   19

Похожие:

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconКонспект лекций по дисциплине “ основы защиты информации” для направления...
Министерство образования и науки украины восточноукраинский государственный университеТ

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconМетодические указания к выполнению лабораторных работ по дисциплине...
Компьютерная инженерия” (для студентов дневной и заочной формы обучения специальности 091501 “Компьютерные системы и сети”, 091502...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconЛитература. Студенты выполняют свои варианты следующих работ: ргр...
«Инженерная и компьютерная графика» модуль «Компьютерная графика» выполняют расчётно-графические работы (ргр) по методическим пособиям...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconЛитература. Студенты выполняют свои варианты следующих работ: ргр...
«Начертательная геометрия и компьютерная графика» модуль «Компьютерная графика» выполняют расчётно-графические работы (ргр) по методическим...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconКонспект лекций по дисциплине “
«Компьютерная инженерия», специальности 091501 «Компьютерные сети и системы», 091502 «Системное программирование»

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconМетодические указания для самостоятельного изучения и подготовки...
Комп'ютерна електроніка”. “Математичне моделювання електронних пристроїв в сапр micro-Cap 0” для студентів напрямку 0915 “Комп'ютерна...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconОпорный конспект лекций по дисциплине Компьютерная графика для специальности...
Тема. Основные понятия компьютерной графики. Аппаратное и программное обеспечение

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconРабочая программа, методические указания и контрольные задания по...
Рабочая программа, методические указания и контрольные задания по дисциплине «Компьютерная графика» для студентов заочного факультета...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconМетодические указания для самостоятельного изучения и подготовки...
Сбис мп I пл”. “Система автоматизованого проектування Quartus ii” для студентів напрямку підготовки 0915 “Комп'ютерна інженерія”./...

Конспект лекций с дисциплины «Компьютерная графика» для направления подготовки 0910 “Компьютерная инженерия” iconМетодические указания для выполнения лабораторных, самостоятельных...
«Информатика и компьютерная техника» (для студентов 1-го и 2-го курсов заочной формы обучения образовательно-квалификационного уровня...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<