Компьютерная графика. Методические рекомендации по

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ
ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ «РИНХ»
ФАКУЛЬТЕТ ИНФОРМАТИЗАЦИИ И УПРАВЛЕНИЯ
КОМПЬЮТЕРНАЯ ГРАФИКА
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
по решению задач
Ростов-на-Дону
2002
Печатается по решению кафедры Экономической информатики и
автоматизации управления РГЭУ.
Авторы-составители: Калугян К.Х., Орлова Н.В.
Рецензенты:
Методические
рекомендации
составлены
по
дисциплине
«Компьютерная графика» для студентов, обучающихся по специальности
351400 «Прикладная информатика» дневной и заочной форм обучения.
Включают руководство по выполнению практических заданий.

Ростовский государственный экономический университет «РИНХ»,
2002.

Калугян К.Х., Орлова Н.В., 2002.
Содержание
Введение
4
1 Аффинные преобразования на плоскости
5
2 Аффинные преобразования в пространстве
1
2
3 Растровая развертка объектов
1
5
4 Объемы файлов
1
9
5 Список использованных и рекомендуемых источников
2
1
Введение
Целью
курса
«Компьютерная
графика»
является
ознакомление
обучающихся с современными средствами интерактивной компьютерной
графики.
В результате изучения курса слушатель должен знать структуру и
общую схему функционирования графических средств, уметь применять
средства интерактивной компьютерной графики в различных сферах
деятельности, приобрести навыки по использованию средств деловой и
иллюстративной графики, уметь выбрать графическое средство на основе
знания основных параметров для создания конкурентоспособного продукта.
Компьютерная графика — это создание, хранение и обработка
моделей
объектов
и
их
изображений
с
помощью
компьютера.
Интерактивная компьютерная графика представляет собой ее важный
раздел, когда пользователь имеет возможность динамически управлять
содержанием изображения, его формой, размерами и цветом с помощью
интерактивных устройств взаимодействия.
1 Аффинные преобразования на плоскости
Предположим, что на плоскости задана исходная аффинная система
координат Oxy и новая система координат O’x’y’. Тогда любой точке
М ставится в соответствие упорядоченная пара чисел (х, у) ее
координат (рисунок 1). Преобразования, происходящие с точкой М,
можно рассматривать в двух вариантах:
а) изменяется координатная система, точка сохранятся, меняются
только ее координаты (рисунок 2);
б) координатная система сохраняется, изменяется точка, ее положение
и координаты (рисунок 3).
Преобразование, при котором точке М ставится в соответствие точка
М’, имеющая в новой системе координат те же координаты, что и в
исходной, называется аффинным.
y
y
y
. М’
М(х,у)
0
M’
.М
М
x
0
x
0
x
Рисунок 1.
Рисунок 2.
Рисунок 3.
Основные аффинные преобразования. Формульная запись.
1) поворот вокруг начальной точки 0 на угол :

x’ = x.cos  – y.sin ,
y’ = x.sin  + y.cos .
M’
M
(рисунок 4).
Рисунок 4.
2) Масштабирование (растяжение / сжатие вдоль координатных осей):
x’ = .x,
y’ = .у,
, – координаты искажения по осям,
,>0,
,>1 – растяжение, ,<1 – сжатие,
= – пропорциональное масштабирование,
 – непропорциональное масштабирование
(рисунок 5).
Рисунок 5.
M
’
M
3) сдвиг (перенос) на вектор, имеющий координаты (m,n):
x’ = x + m,
M’
y’ = у + n.
(рисунок 6).
M
Рисунок 6.
Задача 1.
Имеется треугольник ABC с координатами вершин: A (1,1), B (2,3), C
(3,1). Выполнить 3 основных преобразования:
1) поворот на угол /2;
2) растяжение ==2;
3) сдвиг на вектор с координатами (3,5).
Решение (рисунок 7).
1) x’(A) = 1 * cos /2 – 1 * sin /2 = 0 – 1 = -1;
y’(A) = 1 * sin /2 + 1* cos /2 = 1 + 0 = 1.
A’ (-1, 1).
x’(В) = 2 * cos /2 – 3 * sin /2 = 0 – 3 = -3;
y’(В) = 2 * sin /2 + 3* cos /2 = 2 + 0 = 2.
B’ (-3, 2).
x’(С) = 3 * cos /2 – 1 * sin /2 = 0 – 1 = -1;
y’(С) = 3 * sin /2 + 1* cos /2 = 3 + 0 = 3.
C’ (-1, 3).
2)
x’’(A) = 2 * 1 =
x’’(В) = 2 * 2 =
2;
4;
x’’(С) = 2 * 3 =
6;
y’’(A) = 2 * 1 =
y’’(В) = 2 * 3 =
2.
6.
y’’(С) = 2 * 1 =
2.
A’’ (2, 2).
B’’ (4, 6).
C’’ (6, 2).
x’’’(A) = 1 + 3
x’’’(В) = 2 + 3 =
x’’’(С) = 3 + 3 =
3)
= 4;
5;
6;
y’’’(A) = 1 + 5
y’’’(В) = 3 + 5 =
= 6.
8.
y’’’(С) = 1 + 5 =
6.
A’’’ (4, 6).
B’’’ (5, 8).
C’’’ (6, 6).
9
8
7
6
y
5
4
3
2
1
0
-4
-2
0
2
4
6
x
Рисунок 7 – Результат решения задачи 1
Основные аффинные преобразования. Матричная запись.
1) Матрица вращения (rotation)
os 
R
=
sin 
c
0
in 
os 
s
0
c
0
0
1
2) Матрица растяжения (сжатия) (dilatation)
 0 0
D
0  0
=
0 0 1
8
3) Матрица переноса (translation)
T
1
0
0
1
0
0
m
n
1
=
Задача 2.
Имеется треугольник ABC с координатами вершин: A (1,1), B (2,3), C
(3,1). Выполнить следующие преобразования:
1) поворот на угол 3/2 вокруг точки с координатами (5, 2);
2) растяжение ==2 относительно точки с координатами (5, 2).
Решение (рисунок 8).
1)
1 шаг. Совмещение точки (5, 2) с началом координат (перенос на
вектор (-5, -2)):
1
0
0
T
0
1
0
=
1
5
2
2 шаг. Поворот на угол 3/2:
cos
sin
3/2
3/2
R
- sin
cos
=
3/2
3/2
0
0
0
-
0
0
0
1
= 1
0
0
1
0
0
1
3 шаг. Возврат в точку (5, 2) (перенос на вектор (5, 2)):
1 0 0
T
0 1 0
’=
5 2 1
4 шаг. Последовательное перемножение матриц T, R, T’:
1
0
0
0 0
1 0 0
0
1
1
0
1
0 * 1 0
0 * 0 1 0 = 1
1
0 0
1
5 2 1
3
5
2
Вычисления:
-
0
0
7
0
1
A’ (x’,y’,1) =
(1,1,1) *
B’ (x’,y’,1) =
(2,3,1) *
C’ (x’,y’,1) =
(3,1,1) *
0
1
1
-
0
0
0
3
7
1
0
1
1
-
0
0
0
3
7
1
0
1
1
-
0
0
0
3
7
1
= (4,
6, 1)
= (6,
5, 1)
= (4,
4, 1)
2)
1 шаг. Совмещение точки (5, 2) с началом координат (перенос на
вектор (-5, -2)):
1
0
0
T
0
1
0
=
1
5
2
2 шаг. Растяжение:
D
2
0
0
2
0
0
0
0
1
=
3 шаг. Возврат в точку (5, 2) (перенос на вектор (5, 2)):
1 0 0
T
0 1 0
’=
5 2 1
4 шаг. Последовательное перемножение матриц T, D, T’:
1
0
0
2 0 0
1 0 0
2
0
1
0
* 0 2 0 * 0 1 0 = 0
1
0 0 1
5 2 1
5
2
5 2
Вычисления:
0
2
-
0
0
1
A’’
(1,1,1) *
(x’’,y’’,1)
=
5
B’’
(2,3,1) *
(x’’,y’’,1)
=
5
C’’
(3,1,1) *
(x’’,y’’,1)
=
5
2
0
0
2
0
0
2
-
1
2
0
0
2
0
0
2
-
1
2
0
0
2
0
0
2
-
1
= (-3,
0, 1)
= (-1,
4, 1)
= (1,
0, 1)
7
6
5
4
y
3
2
1
0
-4
-2
0
2
4
6
8
x
Рисунок 8 – Результат решения задачи 2
Самостоятельная работа 1.
Вариант 1.
Имеется треугольник ABC с координатами вершин: A (3,3), B (3,7), C
(6,3).
1) Выполнить 3 основных преобразования с использованием формул:
- поворот треугольника на угол ;
- сжатие треугольника ==0,5;
- сдвиг треугольника на вектор с координатами (5,4).
2) Выполнить следующие преобразования с использованием матричной
записи:
- поворот треугольника на угол /2 вокруг точки с координатами (2,
4);
- растяжение треугольника ==2 относительно точки с
координатами (2,4).
Исходный треугольник и треугольники, полученные в результате
преобразований, в обязательном порядке изображать графически в одной
координатной системе.
Вариант 2.
Имеется треугольник ABC с координатами вершин: A (1,2), B (2,6), C
(7,2).
1) Выполнить 3 основных преобразования с использованием формул:
- поворот треугольника на угол 3/2;
- растяжение треугольника ==2;
- сдвиг треугольника на вектор с координатами (3,4).
2) Выполнить следующие преобразования с использованием матричной
записи:
- поворот треугольника на угол  вокруг точки с координатами (6,
4);
- сжатие треугольника ==0,5 относительно точки с координатами
(6,4).
Исходный треугольник и треугольники, полученные в результате
преобразований, в обязательном порядке изображать графически в одной
координатной системе.
2 Аффинные преобразования в пространстве
1) Сдвиг на вектор с координатами (m, n, l)
1
0 0
T
0
1 0
=
0
0 1
m n l
0
0
0
1
2) Масштабирование (a, b, c – координаты искажения по осям)
a 0 0 0
D
0 b 0 0
=
0 0 c 0
0 0 0 1
3) Поворот вокруг начальной точки 0 на угол 
вокруг оси Oz
c
s
0 0
os 
in 
R
c
0 0
=
sin 
os 
0
0
1 0
0
0
0 1
вокруг оси Oy
c
os 
R
0
0 sin 
1 0
0
0 c
os 
0 0
0
0
=
in 
s
0
1
вокруг оси Ox
1 0
0 c
os 
0 sin 
0 0
R
=
in 
os 
0
s
0
0
c
0
0
1
Задача 3.
Имеется треугольник ABC с координатами вершин: A (1,1,1), B (2,3,2),
C (3,1,3). Выполнить 3 основных преобразования:
1) поворот на угол /2 относительно оси Oz;
2) растяжение a=b=c=2;
3) сдвиг на вектор с координатами (3,5, 7).
Решение.
1)
A’ (x’,y’,z’,1)
(1,1,1,1) *
B’ (x’,y’,z’,1)
(2,3,2,1) *
C’ (x’,y’,z’,1)
(3,1,3,1) *
=
co
s /2
sin /2
0
0
=
si
n /2
c
os /2
0
0
0
-
1
0
0
0
0
0
0
0
1
0
0
-
1
0
0
0
0
0
0
0
1
0
1
=
1
0
0
0
0
= (1,1,1,1)
0
1
1
0
0
0
= (3,2,2,1)
0
1
0
0
= (1,3,3,1)
0
1
2)
2
0
0
0
A’’
(1,1,1,1) *
B’’
(2,3,2,1) *
C’’
(3,1,3,1) *
(x’’,y’’,z’’,1)
(x’’,y’’,z’’,1)
(x’’,y’’,z’’,1)
=
=
=
0
2
0
0
0
0
0
2
0
2
0
0
2
0
0
0
0
0
0
2
0
2
0
0
2
0
0
0
0
0
0
2
0
0
=
(2,2,2,1)
0
1
0
0
=
(4,6,4,1)
0
1
0
0
=
(6,2,6,1)
0
1
3)
A’’’’
(1,1,1,1) *
B’’’’
(2,3,2,1) *
C’’’’
(3,1,3,1) *
(x’’’’,y’’’’,z’’’’,1)
(x’’’’,y’’’’,z’’’’,1)
(x’’’’,y’’’’,z’’’’,1)
=
=
=
1
0
0
1
0
0
0
3
0
5
1
7
1
0
0
1
0
0
0
3
0
5
1
7
1
0
0
1
0
0
0
3
0
5
1
7
0
0
=
(4,6,8,1)
0
1
0
0
=
(5,8,9,1)
0
1
0
0
=
(6,6,10,1)
0
1
Самостоятельная работа 2.
Вариант 1.
Имеется треугольник ABC с координатами вершин: A (3,3,2), B (3,7,1),
C (6,3,4). Выполнить 3 основных преобразования:
1) поворот на угол  относительно оси Oy;
2) сжатие a=b=c=0,5;
3) сдвиг на вектор с координатами (5,4,8).
Вариант 2.
Имеется треугольник ABC с координатами вершин: A (1,2,3), B (2,6,4),
C (7,2,5). Выполнить 3 основных преобразования:
1) поворот на угол 3/2 относительно оси Ox;
2) растяжение a=b=c=2;
3) сдвиг на вектор с координатами (3,4,6).
3 Растровая развертка объектов
Растровая развертка отрезка.
Отрезок: координаты начала – (x0, y0), координаты конца – (xn, yn).
dx =
dy = yn – y0
d1 = 2dy – dx
xn – x0
di
>= 0 => Ti => xi = xi-1 +
di+1 = di + 2(dy
– dx)
1,
yi = yi-1 + 1
< 0 => Si => xi = xi-1 +
di+1 = di + 2dy
1,
yi = yi-1
Этот алгоритм применяется, если угол наклона отрезка не больше 45 о.
В противном случае x и y меняются местами.
Задача 4.
Выполнить растровую развертку отрезка, проведенного из точки с
координатами (5, 8), в точку с координатами (9, 11).
Т.к. угол наклона отрезка меньше 45о, то применяем алгоритм в
прямом направлении (рисунок 9).
dx = 9 –
dy = 11 – 8 = 3
d1 = 2*3 – 4 =
5=4
2
d1 = 2
d2 = d1 + 2(dy –
>= 0 => Ti => x1 = 5 + 1
= 6,
dx) =
= 2 + 2 (3 – 4)
y1 = 8 + 1 = 9
=0
d2 = 0
d3 = d2 + 2(dy –
>= 0 => Ti => x2 = 6 + 1
= 7,
dx) =
= 0 + 2 (3 – 4)
y2 = 9 + 1 = 10
= -2
d3 = -2
< 0 => Si => x3 = 7 + 1 =
8,
d4 = d3 + 2dy =
-2 + +2*3 = 4
y3 = 10
>= 0 => Ti => x4 = 8 + 1
d4 = 4
= 9,
y4 = 10 + 1 = 11.
12
10
8
y
6
4
2
0
0
2
4
6
8
10
x
Рисунок 9 – Результат решения задачи 4
Задача 5.
Выполнить растровую развертку отрезка, проведенного из точки с
координатами (5, 8), в точку с координатами (7, 12).
Т.к. угол наклона отрезка больше 45о, то x и y меняем местами
(рисунок 10).
dx = 7 –
dy = 12 – 8 = 4
d1 = 2dx – dy =
2*2 – 4 = 0
d1 = 0
>= 0 => Ti => x1 = 5 + 1
d2 = d1 + 2(dx
– dy) =
= 0 + 2 (2 – 4)
= -4
d3 = d2 + 2dx =
= -4 + 4 = 0
5=2
= 6,
y1 = 8 + 1 = 9
d2 = -4
< 0 => Si => x2 = 6,
y2 = 9 + 1 = 10
>= 0 => Ti => x3 = 6 + 1
d3 = 0
= 7,
y3 = 10 + 1 = 11.
14
12
10
8
y
6
4
2
0
0
2
4
6
8
x
Рисунок 10 – Результат решения задачи 5
Самостоятельная работа 3.
Вариант 1.
Выполнить растровую развертку отрезка, проведенного из точки с
координатами (1, 2), в точку с координатами (8, 9).
Вариант 2.
Выполнить растровую развертку отрезка, проведенного из точки с
координатами (1, 2), в точку с координатами (6, 9).
Растровая развертка окружности.
Окружность – (x0, y0) = (0, R), где R – радиус.
d1 = 3 – 2R
d
i
>= 0 => Ti => xi = xi-1
+ 1,
yi = yi-1 – 1
< 0 => Si => xi = xi-1
di+1 = di + 4(xi-1 – yi1) + 10
di+1 = di + 4 xi-1 + 6
+ 1,
yi = yi-1
Задача 6.
Выполнить растровую развертку окружности с радиусом 7 единиц
(рисунок 11).
d1 = 3 – 2R = 3 – 2*7 = 11
d1
< 0 => Si => x1 = 0 +
= -11
1 = 1,
= -5
y1 = 7
< 0 => Si => x2 = 1 +
d2
= -5
1 = 2,
y2 = 7
>= 0 => Ti => x3 = 2 +
d3
=5
1 = 3,
y3 = 7 – 1 = 6
< 0 => Si => x4 = 3 +
d4
= -5
d2 = d1 + 4*x0 + 6 = -11 + 6
1 = 4,
d3 = d2 + 4 x1 + 6 = -5 + 4*1
+ 6 = =5
d4 = d3 + 4(x2 – y2) + 10 = 5
+ 4 * *(2 – 7) + 10 = -5
d5 = d4 + 4 x3 + 6 = -5 + 4*3
+ 6 = =13
y4 = 6
>= 0 => Ti => x5 = 4 +
d5
= 13
1 = 5,
y5 = 6 – 1 = 5
8
7
6
5
y 4
3
2
1
0
0
1
2
3
4
5
6
7
8
x
Рисунок 11 – Результат решения задачи 6
Самостоятельная работа 4.
Вариант 1.
Выполнить растровую развертку окружности с радиусом 6 единиц.
Вариант 2.
Выполнить растровую развертку окружности с радиусом 8 единиц.
4 Объемы файлов
Объем векторного изображения складывается из объемов каждого
объекта изображения.
Объем растрового изображения определяется перемножением
составляющих размера изображения (например, 640х480 пикселов) на
величину n – битовую глубину изображения (т.е. величину, опредедяющую
сколько битов описывают один пиксель). Эта величина связана с
количеством цветов в изображении, которое определяется по формуле – 2n.
2-х цветное изображение - 2n = 2, => n = 1;
4-х цветное изображение - 2n = 4, => n = 2;
16-ти цветное изображение - 2n = 16, => n = 4 и т.д.
Задача 7.
Определить, сколько байт памяти в векторном и растровом форматах
занимает 4-х цветное изображение, состоящее из 2-х окружностей, 2-х
прямоугольников и 7-ми отрезков. Известно, что размер изображения
составляет 640х480 пикселов, координаты одной точки занимают 16 бит,
коды операций «чертить окружность», «чертить отрезок», «чертить
прямоугольник» - по 8 бит.
Векторный формат.
(2*8 + 2*2*16 + 2*8 + 2*2*16 + 7*8 + 7*2*16) / 8 = 440 / 8 = 55 байт
(0,05 Кб).
Растровый формат.
640*480*n = (640*480*2) / 8 = 614400 / 8 = 76800 байт (75 Кб).
Самостоятельная работа 5.
Вариант 1.
Определить, сколько байт памяти в векторном и растровом форматах
занимает 16-ти цветное изображение, состоящее из 4-х окружностей, 8-ми
прямоугольников и 5-ти отрезков. Известно, что размер изображения
составляет 640х480 пикселов, координаты одной точки занимают 16 бит,
коды операций «чертить окружность», «чертить отрезок», «чертить
прямоугольник» - по 8 бит.
Вариант 2.
Определить, сколько байт памяти в векторном и растровом форматах
занимает 2-х цветное изображение, состоящее из 3-х окружностей, 6-ти
прямоугольников и 10-ти отрезков. Известно, что размер изображения
составляет 800х600 пикселов, координаты одной точки занимают 16 бит,
коды операций «чертить окружность», «чертить отрезок», «чертить
прямоугольник» - по 8 бит.
Список использованных и рекомендуемых источников:
Основная литература
1 Корриган Д. Компьютерная графика: секреты и решения. М.: Энтроп,
1995.
2
Котов Ю.В., Павлова А.А. Основы машинной графики. М:
Просвещение, 1993.
3 Фоли Дж., Вэн Дэм А. Основы интерактивной машинной графики.
М: Мир, 1985.
4 Фигурнов В.Э. IBM PC для пользователя. – М.: Финансы и
статистика, 1991.
Дополнительная литература
1 Айриг С., Айриг Э. Сканирование - профессиональный подход/Пер. с
англ.- Мн.: ООО "Попурри", 1997.
2 Брябрин В.М. Программное обеспечение персональных ЭВМ. – М.:
Наука, 1989.
3 Моисеев Е. 3D-Studio & Animator Pro. Практическое пособие.
Ростов-на-Дону, 1995.
4 Зенкин А.А. Когнитивная компьютерная графика. М: Наука, 1991.
5 Кобурн Ф., Маккормик П. Эффективная работа с CorelDraw! 8.0. СПб.: Питер, 1998.
6 Комягин В.Б. 3D Studio. Трехмерная компьютерная мультипликация.
Практ. пособие. - М.: ЭКОМ, 1995.
7
Мартинес Ф. Синтез изображений. Принципы, аппаратное и
программное обеспечение: Пер. с франц. - М.: Радио и связь, 1990.
8 Линч Р. Использование Adobe Photoshop 6.
9 Роджерс Д. Алгоритмические основы машинной графики. М: Мир,
1989.
10 Пономаренко С. Adobe PhotoShop 4.0 в подлиннике. - СПб.: BHV,
1998.
11 Энджел Э. Интерактивная компьютерная графика. Вводный курс на
базе OpenGL, 2-е изд. С.-П.: Издательский дом "Вильямс", 2001.
КОМПЬЮТЕРНАЯ ГРАФИКА
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
по решению задач
Каринэ Хачересовна Калугян
Надежда Владимировна Орлова
Начальник РИО РГЭУ
В.Е. Смейле
Лицензия ЛР № 020276 от 18.02.97 Государственного комитета
Российской Федерации по печати
_____________________________________________________________
___
Изд.№
.
Подписано к печати
.
Бумага офсетная. Печать офсетная. Формат 60х84/16.
Уч.-изд. л.
.
Усл. печ. л.
.
Гарнитура "Таймс".
Заказ №
. Тираж 100 экз. "С" .
_____________________________________________________________
___
344000, Ростов-на-Дону, ул. Б. Садовая, 69, РГЭУ, РИО.
Отпечатано в ООП Издательства РГЭУ.
Related documents
Download