Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ИТ.doc
Скачиваний:
46
Добавлен:
17.03.2015
Размер:
3 Мб
Скачать
☆

Лабораторные основы

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

Основные понятия, используемые в лабораторной работе: Однородные координаты. Двумерные преобразования (2D-преобразования). Матрицы. Суперпозиция простейших преобразований на языке матриц. Действия над матрицами.

Все изменения какого-нибудь объекта (кроме изменения цвета) на экране дисплея можно отнести к геометрическим преобразованиям, причем это относится и к изменениям при движении, и к статичным изменениям. Все превращения объекта можно представить как набор (суперпозицию) элементарных геометрических преобразований, выполненных в определённом порядке. В компьютерной графике всё, что относится к преобразованиям на плоскости, принято обозначать 2D, а к преобразованиям в пространстве - 3D.

Двумерные преобразования на плоскости

Сдвиг

На ху-плоскости есть точка Р с координатами (1,1). Сдвинем (перенесём) эту точку на новую позицию с координатами (2,6). Какие параметры этого простого геометрического преобразования? Параметра два: сдвиг по оси х, равный 1=2-1, и сдвиг по оси у, равный 5= 6-1.

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

На ху-плоскости есть точка Р с координатами (2,6) (это точка из предыдущего примера). С помощью операции масштабирования вернём её на прежнее место, то есть на (1,1). Итак, во сколько раз надо сжать координаты точки Р? Очевидно, что по оси х в 2/1=2 раза, а по оси у в 6/1= 6 раз . Или растянуть в 1/2 и 1/6 раза соответственно.

Поворот

На ху-плоскости есть точка Р с координатами (1,1). Повернём точку Р относительно начала координат на угол φ=180°. Найдём её новые координаты. Получим, даже не прибегая к вычислениям (-1,-1). А если, например, φ = 25°, то "на глазок" получить новые координаты точки уже не получится. Выведем уравнения поворота точки на произвольный угол относительно начала координат. Пусть точка Р (х,у) поворотом на угол φ переводится в точку Р'(х',у'). В системе координат в Visual Basic углы по часовой стрелке - положительны. Поворот выполняется относительно начала координат, расстояния от него до точек Р и Р' пусть равны r. Получаем следующие соотношения.

Для точки Р: х = r cos α , у = r sin α .

Для точки Р': х' = r cos (α + φ) = r cos α cos φ - r sin α sin φ,

у' = r sin (α + φ) = r cos α sin φ + r sin α cos φ.

х' = х cos φ - у sin φ

у' = х sin φ + у cos φ

Однородные координаты

Однородными координатами точки называется тройка одновременно не равных нулю чисел.

В компьютерной графике однородные координаты вводятся так: произвольной точке Р(х, у) на плоскости ставится в соответствие точка Р(х, у, 1) в пространстве.

Соединим прямой точки О(0, 0, 0) и Р(х, у, 1). Любую точку этой прямой, соединяющей начало системы координат О(0, 0, 0) с точкой Р(х, у, 1), можно задать тройкой чисел (hx, hy, h), где h≠0. Проведём плоскость z = 1, параллельную плоскости ху, через точку Р(х, у, 1). Прямая, соединяющая точки О и Р, пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху. Таким образом, между произвольной точкой с координатами (х, у) и множеством троек чисел (hx, hy, h), где h≠0, устанавливается взаимно однозначное соответствие, позволяющее считать числа hx, hy, h новыми (однородными) координатами этой точки. В компьютерной графике вслед за проективной геометрией для однородных координат принято обозначение:

х : у : 1

или в более общем случае:

х1 : х2 : х3 (числа х1, х2, х3 не должны быть равны нулю одновременно).

Однородные координаты удобны для программирования геометрических преобразований. При помощи однородных координат и матриц 3-го порядка можно выполнить любое геометрическое преобразование в плоскости. Любое геометрическое преобразование выполняется следующим действием:

(x', y', 1) = (x, y, 1)

x'=xa+yc+1e; y'=xb+yd+1f

Для каждого геометрического преобразования существует своя матрица.

Рассмотрим конкретный пример сдвига. На ху-плоскости есть точка Р с координатами (1,1). Требуется сдвинуть (перенести) эту точку на 1 единицу по оси х и на 5 единиц по оси у. Для сдвига существует следующее матричное выражение:

(x', y', 1) = (x, y, 1)

Здесь dx=1, dy=5. Следовательно, получаем: x'=1×1+1×0+1×1=2; y'=1×0+1×1+1×5=6

Суперпозиция

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

Для этого необходимо вначале переместить фигуру в начало координат, затем повернуть на необходимый угол α и вернуть обратно в точку вращения. Пусть координаты преобразованной фигуры будут ,(три действия – три штриха), а исходной -,. Приведём решение.

;

;

;

Краткая информация из тригонометрии

Формулы сложения

Cos(α+β) = cos α cos β - sin α sin β

Sin(α+β) = sin α cos β - cos α sin β

Некоторые значения тригонометрических функций

α

0°

30°

45°

60°

90°

180°

cos α

1

√3/2

√2/2

½

0

-1

sin α

0

1/2

√22

√3/2

1

0

Матрицы преобразований на плоскости. Общий вид

1. Матрица сдвига (translation)

[T] =

dx - сдвиг по оси х, dy - сдвиг по оси у

2. Матрица масштабирования (dilatation)

[D] =

sx - коэффициент растяжения/сжатия по оси х; sy - коэффициент растяжения/сжатия по оси у. Если sx = sy - масштабирование однородно и пропорции объекта сохраняются. Если sx≠sy - масштабирование неоднородно и пропорции объекта не сохраняются.

3. Матрица поворота (rotation)

[R] =

φ - угол поворота объекта относительно начала координат.

4. Матрица симметрии (reflection)

[Mox] =

Матрицы преобразований в пространстве. Общий вид

1. Матрица сдвига

[T] =

2. Матрица масштабирования

[D] =

3. Матрицы поворота на угол α

[Roz] = [Rox] = [Roy] =

4. Матрицы симметрии

[Mxy] = [Myz] = [Mzx] =