Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CG_lk.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.22 Mб
Скачать

2.3 Геометрические преобразования

2.3.1 Основные математические операции

Геометрические преобразования в МГ как правило связаны с матрицами. Напомним основные понятия матричного исчисления. М а т р и ц а - это таблица коэффициентов размерностью

Элементы называют элементами матрицы.

Операции с матрицами.

1. Две матрицы А = и В = размера ( ) равны друг другу ( А = В) в том и только в том случае, если aik = bik .

2. Сумма двух матриц A = и B = размера ( ) есть матрица размера ( ):

A + B = + =

A + B = + =

3. Произведение матрицы А = размера ( ) на скаляр u есть матрица размера ( ):

=

4. Произведение матрицы А = размера ( ) на матрицу

B = размера ( ) есть матрица размера ( ) :

C = =

где

* =

Более подробные сведения по матричным операциям можно получить в любой литературе по матричным вычислениям.

2.3.2 Двумерные преобразования

Одна из наиболее распространенных задач МГ заключается в определении местоположения пикселя после его поворота, сдвига, масштабирования.

П е р е н о с .

Точки на плоскости Х, У переносятся в новые позиции путем добавления констант к их координатам. Для каждой точки Р(х,у), которая перемещается в точку Р'(х',у') путем сдвига на Dx единиц по оси Х и на Dy единиц по оси У, записываются уравнения :

X'= X + Dx Y'= Y + Dy (2.12)

На Рис. 2.13 показана точка с координатами (3,3) и перемещенная точка с координатами (8,7). Если определить вектор - строки

Р = [X Y] Р' = [X' Y'] T = [ Dx Dy ],

то уравнение (3.12) перепишется в виде:

[X' Y'] = [X Y] + [Dx Dy] (2.13)

или

Р' = Р + T (2.14)

Рис. 2.13. Перенос точки и объекта

Если речь идет о переносе объекта, то уравнение (2.12) применяется к каждой его точке. Однако, при использовании относительных координат можно перенести только его начальную точку (заданную, например, процедурой MoveTo модуля Graf Турбо-Паскаля), а при использовании абсолютных координат перенести только конечные точки отрез ков (Рис.2. 13 б, в).

М а с ш т а б и р о в а н и е. Точку можно "промасштабировать" с коэффициентом Sx вдоль оси Х и с коэффициентом Sy вдоль оси У:

X' = X * Sx Y' = Y * Sy (2.15)

Определив S как

тогда можно записать в матричной форме :

[ X' Y'] = [ X Y] (2.16)

или

Р' = Р* S (2.17)

Рис.2.14. Масштабирование точки и объекта

На Рис.2.14 а) отдельная точка Р (3,2) масштабируется с коэффициентами Sx=3 и Sy= 2,5 . Следует заметить, что масштабирование осуществляется относительно начала координат, что вызывает не только изменение масштаба изображения объекта, но и изменение его положения относительно начала координат (Рис.2. 14 б, в).

П о в о р о т. Точки могут быть повернуты на угол относительно начала координат, как показано на Рис.2. 17. Математически поворот точки определяется следующим образом:

(2.18)

или, в матричной форме:

[X' Y'] = [X Y] * (2.19)

или

Р' = Р* R (2.20)

где R - матрица поворота.

При повороте объекта уравнение (2.18) или (2.19) необходимо применять к каждой точке объекта. При задании объекта примитивами преобразование производится над конечными точками примитивов (Рис.2. 15 б, в).

При повороте положительными считаются углы, измеряемые против

Рис. 2.15 Поворот точки и объекта

движения часовой стрелки от оси Х к оси У. В случае отрицательных углов

можно воспользоваться тождествами :

cos (- )= cos

sin (- ) = - sin .

Уравнение (3.17) легко получить из Рис.2. 19, на котором точка Р(х,у) переводится в точку Р'(х',у') поворотом на угол . Поскольку поворот производится относительно начала координат, расстояние от него до Р и Р' равны. Обозначим их через r. Тогда

x = r * cos y = r * sin (2.21)

и

x'= r cos ( +) = r cos cos - r sin sin (2.22)

y'= r sin (+ ) = r cos sin + r sin cos

Подставив (2.19) в уравнение (2.20) получим уравнение (2.17).

Рис.2. 19. Вывод уравнения поворота

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]