CodeNet / Приложения / Графика / Учебник по компьютерной графике
Компьютерная Графика
Двумерный алгоритм преобразование в новые координаты.
Матричная запись.
Система уравнений (2.2) может быть записана в виде одного матричного уравнения
или с использованием вектора-столбца
В книгах по машинной графике запись с вектором-строкой (2.4) встречается чаще, чем с вектором-столбцом (2.5). Здесь также будет применяться запись типа (2.4). В такой записи i-я строка квадратной матрицы всегда является отображением i-го единичного вектора (здесь i=1,2). Вполне возможно записать в матричной форме систему уравнений (2.3)
Однако первая часть этого уравнения не является чисто матричным произведением. В более сложных ситуациях, когда поворот совмещается с другими преобразованиями, было бы более удобно иметь единое матричное произведение для каждого элементарного преобразования. На первый взгляд это кажется невозможным, если преобразование включает операцию переноса. Но, как мы увидим ниже, с помощью матрицы преобразования размером 3х3 это вполне реально. Начнем с простого переноса. Пусть точка P(x, y) переносится в точку P’(x’, y’), где
y' = y + b
Эти уравнения можно переписать в виде
Но с учетом будущих потребностей это уравнение лучше переписать в следующей форме
(мы работаем в плоскости, поэтому координата Z всегда неизменна)
Легко проверить, что уравнения (2.7) и (2.8) эквивалентны. Такую запись принято называть записью в системе "однородных координат". Запись каждого преобразования в форме произведения матриц позволяет совмещать несколько преобразований в одном. Чтобы показать такое совмещение преобразований, объединим поворот с двумя переносами. Поворот на угол (фи) вокруг начала координат O был описан уравнением (2.4).
Заменим это уравнение следующим:
Теперь выведем новую версию уравнений (2.6) для описания поворота на угол вокруг точки.
Это уравнение может быть выражено формулой
где через R обозначена матрица размером 3 х 3. Для нахождения этой матрицы R будем считать, что преобразование состоит из трех шагов с промежуточными точками (u1, v1) и (u2, v2).
1. Преобразование для переноса точки в начало координат O
где
2. Поворот на угол (фи) относительно точки начала координат O
где
3. Перенос из начала координат в точку
где
Возможность комбинации этих шагов основана на свойстве ассоциативности матричного умножения, то есть
для любых трех матриц A, B и C, имеющих размерности, допускается такое умножение. Для любой части этого уравнения мы можем просто записать ABC.
Теперь найдем
[x' y' 1] = [u2 v2 1]T = {[u1 v1 1] R }T = [u1 v1 1] R T = {[x y 1]T'} R T = [x y 1]T' R T = [x y 1]R
где
Это и будет искомая матрица, которая после выполнения двух матричных умножений дает
где введены обозначения
c2 = y -x Sin -y Cos
Оставить комментарий
Комментарии
c1 = -y + x - x*Cos + y*Sin
c2 = x + y - x*Sin - y*Cos