- •Пугачев а.И.
- •1.1. Растровые изображения
- •1.2. Графические устройства ввода-вывода
- •1.3. Видеоадаптеры
- •2.1. Двумерные примитивы
- •2.2. Визуализация на дискретной области вывода
- •2.3. Визуализация отрезков прямых
- •2.5. Кривые Безье
- •2.7. Алгоритм закрашивания ориентированных многоугольников
- •2.8. Теоретико-множественные операции над двумерными областями
- •2.9. Построчный алгоритм тмо
- •2.10. Программная организация данных для представления сложных объектов
- •3.1. Двумерные геометрические преобразования
- •3.2. Совмещение преобразований. Преобразование относительно заданного центра
- •3.4. Непрерывные геометрические преобразования
- •3.5. Линейные преобразования фрагментов изображения
- •4.1. Трехмерные примитивы
- •4.2. Аппроксимация криволинейных поверхностей
- •4.3. Многогранники и сложные объекты
- •4.4. Свет и цвет
- •4.5. Диффузная модель распространения света
- •4.6. Зеркальное отражение света
- •4.7. Трехмерные геометрические преобразования
- •4.8. Проецирование трехмерных объектов
- •4.9. Ориентация и потенциальная видимость поверхностей
- •4.10. Удаление невидимых точек поверхностей
- •4.11. Метод визуального сглаживания Гуро
- •4.12. Метод визуального сглаживания Фонга
- •4.13. Системы координат в пространственной сцене
- •4.14. Алгоритмы трехмерной визуализации
- •4.15. Построение изображения с тенями
- •Основы компьютерной графики
3.1. Двумерные геометрические преобразования
Практически всегда над объектами требуется производить преобразования, направленные на изменение их положения на плоскости, размеров или ориентации. Будем называть такие преобразования геометрическими. В математике перечисленные преобразования относятся к линейным преобразованиям над координатами (x, y) точек объектов и описываются линейными зависимостями:
(3.1)
Здесь (x, y) – координаты точки (x, y) после преобразования.
Для линейных преобразований характерно то, что прямая линия преобразуется в прямую, при этом углы между прямыми могут изменяться. Наиболее распространенными видами линейных преобразований, из комбинации которых можно представить любое другое линейное преобразование, являются:
-
плоскопараллельное перемещение;
-
масштабирование;
-
поворот.
Например, плоскопараллельное перемещение точки (x, y) на расстояние mx по оси x и на my по оси y записывается как
(3.2)
Чтобы все линейные преобразования можно было представить единообразно в матричной форме, удобно использовать применяемые в проективной геометрии однородные координаты [5, 7, 8].
Замена обычных координат однородными состоит в том, что всякой точке (x, y) на плоскости OXY можно поставить в соответствие точку в координатном пространстве OXYV с координатами (xТ, yТ, v), называемыми однородными координатами, причем и v = const для всех точек плоскости OXY (рис. 3.1). Соответствие между обычными (декартовыми) и однородными координатами устанавливается следующим правилом преобразования однородных координат в декартовы:
x = xТ / v; y = yТ / v. (3.3)
Из соотношений (3.3) следует, что все прямые, связывающие точки в однородной системе координат с соответствующими им точками на плоскости OXY, сходятся в одной точке на оси OV с координатами (0, 0, v/(1 – v)). Если возможно, то стремятся использовать значение v = 1. При этом прямые, связывающие точки в однородной и декартовой системах координат, будут параллельны оси OV, а однородные координаты xТ, yТ совпадают с обычными.
Рис. 3.1
Далее для описания геометрических преобразований будем использовать однородные координаты. В однородных координатах любое линейное геометрическое преобразование можно представить в матричной форме следующим образом:
(3.4)
Здесь C = [x y 1] – матрица исходных координат; C' = [x' y' v] – матрица новых координат после преобразования; W – матрица преобразования. Отметим, что v = 1 только для тех преобразований, в матрице W которых w13, w23 = 0 и w33 = 1.
Для всякого линейного преобразования существует точка, называемая центром преобразования, для которой это преобразование инвариантно, т.е. не изменяет координат этого центра.
Преобразование плоскопараллельного перемещения (сдвига) задается следующим образом:
(3.5)
Здесь mx, my – смещения по соответствующим осям. Для плоскопараллельного перемещения центром преобразования формально считается точка .
Преобразование масштабирования относительно начала координат
(3.6)
Здесь sx, sy – масштабные коэффициенты по соответствующим осям. Масштабными коэффициентами могут быть любые числа, отличные от 0. При sx, sy > 1 преобразование приводит к увеличению размеров, а при sx, sy < 1 – к уменьшению. Если sx = sy, масштабирование называется пропорциональным. При отрицательных значениях масштабных коэффициентов происходит не только изменение размеров, но и зеркальное отражение преобразуемой фигуры относительно соответствующей оси. В частности, преобразование
(3.7)
задает отражение относительно осей OX и OY, что эквивалентно повороту на 1800.
Преобразование поворота на угол относительно начала координат
(3.8)
Направление поворота определяется знаком угла .