МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ «РИНХ» ФАКУЛЬТЕТ ИНФОРМАТИЗАЦИИ И УПРАВЛЕНИЯ КОМПЬЮТЕРНАЯ ГРАФИКА МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ по решению задач Ростов-на-Дону 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, РГЭУ, РИО. Отпечатано в ООП Издательства РГЭУ.