Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по компьютерной графике 1 курс.doc
Скачиваний:
43
Добавлен:
27.03.2015
Размер:
1.84 Mб
Скачать

Порядок выполнения работы

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

2. Сравнить по качеству получаемых изображений алгоритмы ЦДА и Брезенхема, для чего рекомендуется использовать увеличенные пиксели (состоящие из нескольких пикселов экрана, например, блоки 55 пикселов). Для сравнения выводить точное изображение отрезка, используя функцию line.

3. Сравнить по быстродействию алгоритм, основанный на уравнении прямой и алгоритм Брезенхема. Для этого рекомендуется составить программу, которая заполняет часть экрана монитора прямыми линиями с использованием сначала алгоритма, основанного на уравнении прямой, а затем – с использованием алгоритма Брезенхема. Предлагается использовать процедуру gettime(&t), позволяющую получить системное время начала и конца работы алгоритма, где t – имя структуры, определенной как

struct time

{unsigned char ti_min;

unsigned char ti_hour;

unsigned char ti_sec;

unsigned char ti_hund}.

Контрольные вопросы

  1. Назначение алгоритмов растровой графики.

  2. Проблема быстродействия алгоритмов и регенерации изображения.

  3. Требования к алгоритмам растровой развертки линий.

  4. Сравнение симметричного и несимметричного алгоритмов ЦДА.

  5. Графическое обоснование алгоритма Брезенхема растровой развертки линий.

  6. Как обобщить алгоритм Брезенхема на отрезок с любым углом наклона.

  7. Сравнить алгоритмы ЦДА и Брезенхема по качеству прорисовки линий.

  8. Сравнить алгоритмы ЦДА и Брезенхема по быстродействию.

Литература

  1. Вельтмандер П.В. Машинная графика: основные алгоритмы. Учеб. пособие в электронном виде: http://ermak.cs.nstu.ru/kg_rivs

  2. Роджерс Д. Алгоритмические основы машинной графики. Пер. с англ. М.: Мир,1989.

  3. Павлидис Т. Алгоритмы машинной графики и обработки изображений. Пер. с англ. М.: Радио и связь, 1986.

  4. Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики. В 2-х книгах. Пер. с англ. М.: Мир, 1985.

  5. Шикин Е.В., Боресков А.В. "Компьютерная графика. Полигональные модели". М.: "ДИАЛОГ-МИФИ", 2000.

Расчетно-графическое задание

Работа с графикой на языке с++

Цель работы

Освоить необходимые средства для написания программ на языке С++, работающих в графическом режиме.

Содержание работы и методические указания к ее выполнению

Приступая к работе с графикой, следует вспомнить, что:

  • в графическом режиме экран представляет собой совокупность точек, каждая из которых может быть окрашена в один из 16-ти цветов;

  • координаты точек возрастают слева направо и сверху вниз. Левая верхняя точка имеет координаты (0,0), нижняя правая – (639, 479);

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

Шаблон графической программы выглядит следующим образом:

// шаблон графической программы на Си

# include <graphics.h>

# include < conio.h>

# define Pathtodriver c:\\borlandc\\bgi\\

void main (void)

{

int gdriver = DETECT; // драйвер

int gmode; // режим

int errorcode; // код ошибки

initgraph (&gdriver, &gmode, Pathtodriver);

errorcode = graphresult ( );

if (errorcode != grOk) // ошибка инициализации

// графического режима

{

printf ( Ошибка: %d\n, errorcode);

puts (  Для завершения программы нажмите <Enter>);

getch ( );

return;

}

// далее инструкции программы

closegraph ( ); // завершение графического режима

}

Для выполнения задания необходимо выполнить следующие действия:

1. Изучить прототипы основных графических функций, описанных в заголовочных файлах <graphics.h> ,<conio.h>.

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

initgraph

переключение компьютера в графический режим;

closegraph

переключение компьютера в текстовый режим;

getmaxx, getmaxy

определение наибольшего значения по координатам х, y;

moveto

перемещение в точку х, у;

lineto

вычерчивание линии между текущей позицией и точкой х,у;

line

вычерчивание линии между точками, заданными своими координатами;

getmaxcolor

получение информации о максимальном номере обозначения цвета;

setcolor, setbkcolor

установка цвета изображения и фона;

getcolor, getbkcolor

получение цвета изображения и фона;

putpixel, getpixel

получение и установка пикселя;

outtext

вывод графического текста с текущей позиции;

outtextxy

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

textwidth, textheight

определение количества пикселей в размере строки по горизонтали и вертикали;

settextstyle

выбор шрифта и его размера;

circle, arc, ellipse

изображение круга, дуги, эллипса;

setfillstyle

выбор шаблона и цвета для заполнения;

fillpolly

заполнение цветом

fillellipse

заполнение эллипса цветом

2. По предлагаемым ниже вариантам разработать программу на языке С++, решающую поставленную задачу. Результаты работы программы должны сопровождаться выводом в графическом режиме поясняющего сообщения.

3. Подготовить файл с разработанной программой, оттранслировать, собрать и выполнить программу с учетом требований операционных систем и прог­раммных оболочек, в которых эта программа выполняется. При необ­ходимости исправить ошибки и вновь повторить технологический процесс решения задачи. Подключить необходимые заголовочные файлы graphics.h и conio.h, а также обеспечить нахождение в текущем каталоге драйвера графического адаптера.

4. Оформить отчет, включающий следующие пункты:

  • Титул

  • Условие задачи

  • Анализ задачи:

  • Исходные данные (что пользователь получает и вводит с клавиатуры)

  • Результаты (что пользователь увидит на экране – все возможные результаты, сообщения об ошибках)

  • Метод решения (связь между исходными данными и результатом)

  • Текст программы

  • Тесты (примеры) – исходные данные, результат, выводы

  • Общие выводы по работе

5. Защитить работу, ответив на вопросы преподавателя.