exam02 - MiAneko24/bmstu-cg GitHub Wiki

02. Преобразования на плоскости. Вывод расчетных соотношений. Матрицы преобразований.

Преобразования на плоскости

Преобразование изображения на плоскости: A(x, y) → B(x1, y1)

x1 = Ax + By + C
y1 = Dx + Ey + F

Однородные координаты
(x, y, w) - w. масштабный множитель (для плоского случая w = 1), в обратном случае x' = x / w, y' = y / w.
(x1, y1, 1) = (x, y, 1) * Матрица преобразований

Матрица преобразований

matrix

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

  • Операция преобразования, в общем случае, не коммутативна.
  • Если определитель матрицы преобразований отличен от нуля, то такое преобразование будет аффинным (потому что тогда существует обратная матрица, которая будет соответствовать обратному преобразованию)
  • Любое аффинное преобразование можно представить в виде: перенос, масштабирование, поворот.

Перенос (dx, dy)

A(x, y) → B(x1, y1)
x1 = x + dx
y1 = y + dy

  • |dx|, |dy| < 0.5 не делать

Матрица преобразований

matrixdxdy

Масштабирование (kx, ky, xm, ym)

x1 = kx * x + (1 - kx) * xm
y1 = ky * y + (1 - ky) * ym

  • kx = ky - масштабирование однородное
  • kx != ky - масштабирование неоднородное
  • Отражение относительно OY: kx = -1, ky = 1
  • Отражение относительно OX: kx = 1, ky = -1
  • Оражение относительно начала координат: kx = -1, ky = -1
  • Если коэф. масштабирования больше 1, то изображение удаляется от центра и увеличивается.
  • Если коэф. масштабирование меньше 1, то изображение приближается от центра и уменьшается.

Матрица преобразований

kxkymatrix

Поворот (xc, yc, θ)

x1 = xc + (x - xc) * cosθ + (y - yc) * sinθ
y1 = yc - (x - xc) * sinθ + (y - yc) * cosθ

Вывод:
vivod

  • Поворот идёт против часовой стрелки.

Матрица преобразований

matrixxcyc

Коммутативность

Коммутативность – независимость результата преобразований от порядка, в котором они происходят.

Коммутативные операции:

Первое преобразование Второе преобразование
Перенос Перенос
Масштабирование Масштабирование
Поворот Поворот
Масштабирование однородное Поворот
  • Остальные комбинации - не коммутативны.

Аддитивные

Перенос (матрица переноса * матрица переноса)

move

Поворот (матрица поворота * матрица поворота)

turn

Мультипликативные

Масштабирование (матрица масштабированиея * матрица масштабирования)

kxky

Следующий вопрос: 03. Построение плоских кривых. Выбор шага изменения аргумента. Алгоритм построения эллипса и окружности по методу средней точки.

Предыдущий вопрос: 01. Задача синтеза сложного динамического изображения. Этапы синтеза изображения. Последовательность и основное содержание.