Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_лабы_КГи3D виз_2014_план_2012.doc
Скачиваний:
6
Добавлен:
16.02.2016
Размер:
468.99 Кб
Скачать

Министерство образования и науки Республики Казахстан

Карагандинский государственный технический университет

Кафедра информационно-вычислительные системы

(наименование кафедры полностью)

Олейникова А.В.

(Ф. И. О. авторов)

Методические указания

к лабораторным работам по дисциплине

«Компьютерная графика и 3D визуализация»

(наименование дисциплины)

«Графика и интерфейсы»

(наименование модуля)

для студентов специальности 5B070400 «Вычислительная техника и программное обеспечение»

(шифр, наименование специальности)

Караганда 20 14

Лабораторная работа № 1

Использование графических примитивов

Ц е л ь р а б о т ы:получение навыков построения изображений с помощью графических примитивов.

Задание к работе

  1. Изучить возможности Delphiдля работы в графическом режиме.

2. Изучить графические примитивы языка Delphi.

3. Разработать алгоритм и составить программу для построения на экране изображения в соответствии с номером варианта. В качестве исходных данных взять указанные в табл. 2 параметры, и, возможно, дополнить недостающими.

Содержание отчета

  1. Постановка задачи.

  2. Вывод необходимых формул.

  3. Спецификации подпрограмм.

  4. Описание основных алгоритмов.

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

  6. Наборы тестовых данных для построения изображений.

  7. Ответы на контрольные вопросы.

Методические указания

Богатство изобразительных возможностей Windowsсвязано с так называемым дескриптором контекста графического устройстваDS(Devicecontext) и тремя входящими в него инструментами – шрифтом, пером и кистью. ВDelphiсозданы специализированные классы-надстройки, существенно упрощающие использование графических инструментовWindows: для контекста – классTCanvas, для шрифта –TFont, для пера –Tpenи для кистиTBrush. Связанные с этими классами объекты автоматически создаются для всех видимых элементов и становятся доступны программе через свойстваCanvas,Font,PenиBrush.

С помощью свойства pixels все пикселы канвы представляются в виде двумерного массива точек с нулевой нижней границей по каждому измерению; точка Pixels [0, 0] соответствует левому верхнему пикселу канвы. Изменяя цвет пикселов, можно прорисовывать изображение по отдельным точкам. Методы класса перечислены в табл. 1.

Таблица 1- Методы класса TCanvas

Метод

Выполняемое действие

1

2

procedure Arc(XI, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer);

Чертит дугу эллипса в охватываю-щем прямоугольнике (xi.Yl) — (X2.Y2). Начало дуги лежит на пере-сечении эллипса и луча, проведен-ного из его центра в точку (хз.УЗ), а конец - на пересечении с лучом из центра в точку (X4.Y4). Дуга чертится против часовой стрелки.

procedure Chord (XI, Yl, К Y2, ХЗ, Y3, Х4, Y4: Integer);

Чертит сегмент эллипса в охваты-вающем прямоугольнике (xi.Yl) — (X2.Y2). Начало дуги сегмента лежит на пересечении эллипса и луча, проведенного из его центра в точку (x3,Y3), а конец - на пересе-чении с лучом из центра в точку (x4,Y4). Дуга сегмента чертится против часовой стрелки, а начальная и конечная точки дуги соединяются прямой.

procedure CopyRect (Dest: TRect; Canvas: TCanvas; Source: TRect);

Копирует изображение Source канвы Canvas в участок Dest текущей канвы

procedure Draw (X, Y: Integer; Graphic: TGraphic)

Осуществляет прорисовку графического объекта Graphic так, чтобы левый верхний угол объекта расположился в точке (x,Y)

procedure DrawFocusRect

(const Rect: Rect);

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

procedure Ellipse(XI, Yl, Y2: Integer);

Чертит эллипс в охватывающем прямоугольнике (xi.Yl) — (X2.Y2). Заполняет внутреннее пространство эллипса текущей кистью

procedure FillRect (const Rect:TRect);

Заполняет текущей кистью прямоугольную область Rect, включая ее левую и верхнюю границы, но не затрагивая правую и нижнюю границы

Продолжение табл.1

1

2

procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

Производит заливку канвы текущей кистью. Заливка начинается с точки (X,Y) и распространяется во все стороны от нее. Если FillStyle=fsSurface, заливка распространяется на все соседние точки с цветом Color. Если FillStyle=fsBorder, наоборот, заливка прекращается на точках с этим цветом

procedure FrameRect (const Rect: TRect);

Очерчивает границы прямоугольника Rect текущей кистью толщиной в 1 пиксел без заполнения внутренней части прямоугольника

procedure LineTo(X, Y: Integer) ;

Чертит линию от текущего положения пера до точки (X,Y)

procedure MoveTo(X, Y: Integer) ;

Перемещает перо в положение (X,Y) без вычерчивания линий

procedure RoundRect(XI, Yl, X2, Y2, X3, Y3: Integer);

Вычерчивает и заполняет прямоугольник (X1,Yl) — (X2,Y2) со скругленными углами. Прямоугольник (X1,Yl)— (X3,Y3) определяет дугу эллипса для скругления углов

procedure Polygon (Points: array of TPoint);

Вычерчивает пером многоугольник по точкам, заданным в массиве Points. Конечная точка соединяется с начальной, и многоугольник заполняется кистью. Для вычерчивания без заполнения используйте метод Polyline

Варианты заданий

Таблица 2

Вариант

Рисунок

Исходные данные

1

2

3

1

a

a основания равнобедренных треугольников;

n количество описанных окружностей

2

h

−угол между лучами;

h расстояние между центрами окружностей, вписанных в данный угол

3

a,b стороны треугольника;

n количество вписанных окружностей

Продолжение табл.2

1

2

3

4

b

a

а, b минимальные полуоси эллипса;

n количество вложенных полуэллипсов

5

h

h

h

Огибающая эллипсов парабола.

h расстояние между цент -рами эллипсов;

k отношение полуосей эллипсов

6

a

а − сторона правильного

многоугольника;

n количество сторон правильного многоугольника

7

n количество сторон правильного многоугольника

Продолжение табл.2

1

2

3

8

a

a сторона треугольника;

n количество вписанных

треугольников

9

a, b стороны треугольника;

n  количество описанных около окружностей квадратов

1

0

R1

R2

R1, R2  радиусы окружностей, образующих кольцо;

n  количество окружностей, равномерно размещенных в кольце (n≥2).

11

b

a

а, bполуоси внутреннего эллипса;

n количество описанных эллипсов

Продолжение табл. 2

1

2

3

1

2

y=kx+c

b

a

а, b полуоси внутреннего эллипса;

n количество описанных около эллипсов ромбов

13

h

−угол между лучами;

h начальное расстояние

14

а а

а

а − минимальная сторона треугольника;

n количество вписанных

треугольников

15

k отношение оснований трапеций;

n количество вписанных окружностей

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

1. Что входит в состав видеосистемы персонального компьютера?

2. Основные функции видеоадаптера.

3. Классификация и анализ графических режимов.

4. Система координат экрана и управление графическим курсором.

5. Что такое графический примитив?

6. Подпрограммы для вывода отрезков.

7. Построение прямоугольников и ломаных.

8. Управление стилем линий.

9. Изображение окружностей, эллипсов, дуг.

10. Что такое коэффициент сжатия изображения, и в каких случаях его следует учитывать?

Лабораторная работа № 2

Построение графиков функций одной переменной

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