- •Министерство образования и науки Российской Федерации
- •Йошкар-Ола,
- •2012 Г.
- •Задание
- •Введение
- •Двумерные матричные преобразования
- •Однородные координаты и матричное представление двумерных преобразований
- •1. Поворот
- •2. Перенос
- •3. Масштабирование
- •Общий алгоритм геометрических преобразований
- •Алгоритм выполнения программы
1. Поворот
При повороте системы координат XY в декартовой плоскости относительно центра вращения, совпадающего с началом координат, на некоторый угол w координаты произвольной точки P в новой системе координат (x',y') могут быть выражены через координаты этой точки в прежней системе координат (x,y):
x'= x*Cos w + y*Sin w
y'=-x*Sin w + y*Cos w
Этот поворот можно интерпритировать, как частный случай поворота в пространстве XYZ, а именно как плоский поворот относительно оси Z, проходящий через центр вращения перпендикулярно плоскости XY.
Когда преобразуется большое число точек, операция поворота выполняется с использованием матрицы поворота;
Сos w |
Sin w |
0 |
-Sin w |
Cos w |
0 |
0 |
0 |
1 |
R =
Матрица R - квадратная размерностью 3 * 3 для двухмерного пространства и размерностью 4 * 4 для трехмерного.
2. Перенос
При переносе начала координат, направление осей новой системы координат остается прежним, сохраняется и масштаб. Однако новое начало координат соответствует точке (Tx, Ty) в прежней системе. Следовательно, в новой системе координат прежнее начало координат соответствует (-Tx, -Ty), а точка(x ,y) прежней системы координат становится точкой (x-Tx,y-Ty) новой системе координат.
Операция переноса выполняется с помощью матрицы переноса.
1 |
0 |
0 |
0 |
1 |
0 |
Tx |
Ty |
1 |
3. Масштабирование
При этом преобразовании начало координат и направление осей старой и новой осей координат одинакова, но масштаб по осям различен Пусть отрезок единичной длины на исходной оси X становится отрезком длины Sx на новой оси Х', а единичный отрезок на прежней оси Y становится отрезком длиной Sy на новой. Тогда точка (x ,y) в прежней системе имеет координаты (x*Sx ,y*Sy) в новой системе.
Sx |
0 |
0 |
0 |
Sy |
0 |
0 |
0 |
1 |
Преобразования масштабирования выполняются с помощью матрицы масштабирования.
Общий алгоритм геометрических преобразований
Алгоритм выполнения геометрических преобразований с произвольным ГО может быть представлен в виде последовательности шагов (данные и коэффициенты для геометрических преобразований заложены в программу):
Вычисление матрицы поворота на заданный угол.
Вычисление матрицы переноса на заданное расстояние.
Вычисление матрицы масштабирования на заданные коэффициенты.
Выполнение операции перемножения матриц в заданном порядке в зависимости от вида геометрического преобразования.
Построение изображения в исходной системе координат с запоминанием вычисленных координат точек изображения в массивах, т.е. форматирование изображения без вывода его на экран.
Преобразование всех точек изображения по заданному правилу путем умножения результирующей матрицы ГП на вектор координат каждой точки изображения.
Построение изображения на экране.
Шаги 5 - 7 алгоритма могут быть объединены. При этом координаты точек отдельного примитива(пикселя, отрезка прямой) вычисляются в исходной системе координат, а затем преобразуются и сразу выводятся на экран. Тогда нет необходимости хранить в памяти ЭВМ строку всего изображения целиком: точки ГО выводятся на экран по мере их вычисления.