Курс лекций по компьютерной геометрии и графике
  256Компьютерная графикаКГиГЛабораторная работа № 1

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

Страницы: 1 2 3 4 5 6

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

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

1. Ведение

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

2. Поворот

При повороте системы координат XY в декартовой плоскости относительно центра вращения, совпадающего с началом координат, на некоторый угол w координаты произвольной точки P в новой системе координат (x',y') могут быть выражены через координаты этой точки в прежней системе координат (x,y):
x'= x*Cos w + y*Sin w
y'=-x*Sin w + y*Cos w
Этот поворот можно интерпритировать, как частный случай поворота в пространстве XYZ, а именно как плоский поворот относительно оси Z, проходящий через центр вращения перпендикулярно плоскости XY.
Когда преобразуется большое число точек, операция поворота выполняется с использованием матрицы поворота;
lab01.gif (572 bytes)

Матрица R - квадратная размерностью 3 * 3 для двухмерного пространства и размерностью 4 * 4 для трехмерного.

3. Перенос

При переносе начала координат, направление осей новой системы координат остается прежним, сохраняется и масштаб. Однако новое начало координат соответствует точке (Tx, Ty) в прежней системе. Следовательно, в новой системе координат прежнее начало координат соответствует (-Tx, -Ty), а точка(x ,y) прежней системы координат становится точкой (x-Tx,y-Ty) новой системе координат.
Операция переноса выполняется с помощью матрицы переноса.
lab02.gif (445 bytes)

4. Масштабирование

При этом преобразовании начало координат и направление осей старой и новой осей координат одинакова, но масштаб по осям различен Пусть отрезок единичной длины на исходной оси X становится отрезком длины Sx на новой оси Х', а единичный отрезок на прежней оси Y становится отрезком длиной Sy на новой. Тогда точка (x ,y) в прежней системе имеет координаты (x*Sx ,y*Sy) в новой системе.
Преобразования масштабирования выполняются с помощью матрицы масштабирования.
lab03.gif (452 bytes)

5. Пример выполнения геометрических преобразований

Любое изменение первоначального изображения при переходе то первоначально определенной системы координат к новой (экстренной) будет состоять из плоских ГО из комбинации перечисленных трех типов преобразований.
При этом важно соблюдать порядок их применения; изменение последовательности преобразований может привести к получению изображения, отличного от того, которое хотел получить программист.
Пусть полное изменение системы координат достигается:
Перенос начала координат в точку (1,0);
Поворотом осей координат на Pi/4 радиан;
Изменение масштаба по оси Х в 2 раза (т.е. Sx=2).
Комбинация этих 3 изменений (в указанном порядке) формирует систему координат экрана. Что произойдет с отрезком прямой линии, соединяющей точки (3,2) и (-1,-1) в прежней системе координат?
При всех ГП линия преобразуется так же в прямую линию, поэтому необходимо рассмотреть что произойдет с координатами и концами отрезка. Построим матрицы ГП.
lab04.gif (404 bytes)

lab05.gif (832 bytes)

lab06.gif (402 bytes)

Координаты исходных точек в виде векторов.

lab07.gif (268 bytes)     lab08.gif (289 bytes)

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

lab09.gif (1326 bytes)

 

То есть новые координаты точки (3,2) становятся Р1? =(4*2**(1/2),0).

Точно так же:

lab10.gif (1355 bytes)

То есть Р2? =(-3*2**(1/2),2**(-1/2)).

Произведение двух матриц А и В:

lab11.gif (1509 bytes)

Где cij=ai1*b1j+ai2*b2j+ai3*b3j.
Для вычисления каждой матрицы - T, S, R - могут быть написаны соответствующие процедуры.

6. Общий алгоритм геометрических преобразований

Алгоритм выполнения геометрических преобразований с произвольным ГО может быть представлен в виде последовательности шагов:
Вычисление матрицы поворота на заданный угол.
Вычисление матрицы переноса на заданное расстояние.
Вычисление матрицы масштабирования на заданные коэффициенты.
Выполнение операции перемножения матриц в заданном порядке в зависимости от вида геометрического преобразования.
Построение изображения в исходной системе координат с запоминанием вычисленных координат точек изображения в массивах, т.е. форматирование изображения без вывода его на экран.
Преобразование всех точек изображения по заданному правилу путем умножения результирующей матрицы ГП на вектор координат каждой точки изображения.
Построение изображения на экране.
Шаги 5 - 7 алгоритма могут быть объединены. При этом координаты точек отдельного примитива(пикселя, отрезка прямой) вычисляются в исходной системе координат, а затем преобразуются и сразу выводятся на экран. Тогда нет необходимости хранить в памяти ЭВМ строку всего изображения целиком: точки ГО выводятся на экран по мере их вычисления.

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

7.1. Ознакомиться по методическим указаниям и литературе с методами ГП графических объектов.
7.2. Составить на языке Pascal программы реализующие формирование матриц поворота, переноса, масштабирования.
7.3 Составить программу формирования заданного графического изображения согласно варианту задания из табл.1.

Таблица 1

Номер варианта Угол поворота, a Константы переноса Константы масштабирования
Тх Ту Sx Sy
1 Pi/4 50 -50 2 0.5
2 -Pi/4 0 100 2 0.5
3 Pi/2 100 100 1 2
4 Pi 150 -50 0.5 1
5 -Pi -150 50 2 1
6 -{i/2 50 50 0.5 2
7 Pi 150 0 1 2
8 Pi/4 -100 0 2 1
9 -Pi/4 -50 -100 0.5 2
10 Pi/2 0 -100 1 0.5
11 -Pi 100 -150 2 2
12 -Pi/2 50 -150 0.5 0.5
13 Pi/6 -150 -50 0.5 3
14 -Pi/6 -100 100 2 3
15 Pi/6 50 100 1 3

7.4 Составить программу, рисующую заданное изображение после геометрических преобразований; вид преобразований - согласно варианту задания (прил. 1). На цветном мониторе вывести исходное и преобразованное изображение разными цветами.
Отладить программу в среде Турбо Паскаль 7.0.

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

8.1 Сущность и назначение геометрических преобразований.
8.2 Методы выполнения поворота, переноса, масштабирования графических изображений
8.3 Алгоритм выполнения геометрических преобразований

Страницы: 1 2 3 4 5 6

Рекламный блок

Информационный блок