affin_trans.pptx
- Количество слайдов: 25
Аффинные преобразования
Определение аффинных преобразований. Аффинным называется преобразование плоскости, переводящее каждую прямую в прямую и параллельные прямые а параллельные. (от англ. affinity – родство)
Свойства аффинных преобразований. n 1) аффинные преобразования сохраняют линейные отношения между векторами n 2) Аффинные преобразования сохраняют отношения коллинеарных отрезков. В частности, середины отрезков переходят в середины отрезков, а медианы треугольников, соответственно, в медианы образов этих треугольников. n 3) При аффинных преобразованиях отрезки переходят в отрезки, треугольники – в треугольники, тетраэдры – в тетраэдры. n 4) Композиция аффинных преобразований плоскости является аффинным преобразованием плоскости.
Теорема о задании аффинных преобразований. Для любых данных треугольников АВС и А’В’С’ существует единственное аффинное преобразование, переводящее А в А’, В в В’, С в С’.
Прямая на плоскости Общее уравнение прямой линии на плоскости в декартовых координатах: где A, B и C — произвольные постоянные, причем постоянные A и B не равны нулю одновременно. Вектор с координатами (A, B) называется нормальным вектором и он перпендикулярен прямой. Вектор с координатами ( -B, A) или (B, -A) называется направляющим вектором. При C = 0 прямая проходит через начало координат.
Метод аффинных преобразований.
Преобразование плоскости называется аффинным, если оно взаимно однозначно; образом любой прямой является прямая. Преобразование называется взаимно однозначным, если разные точки переходят в разные; в каждую точку переходит какая-то точка.
Однородные координаты Определение. Однородные координаты — координаты, обладающие тем свойством, что определяемый ими объект не меняется при умножении всех координат на одно и то же число. Однородными координатами вектора (х, у) является тройка чисел (x', y', h), где х = х' / h, у = y'/h, а h — некоторое вещественное число (случай, когда h = 0 является особым). Прим. Данные координаты не позволяют однозначно задать точку плоскости. Например, (1, 1, 1) и (2, 2, 2) задают одну и ту же точку (1, 1). Предлагается взять набор (x, y, 1), который будет описывать все точки плоскости. Матрица преобразования для однородных координат на плоскости имеет размер 3 х3. Рассмотрим некоторые преобразования в однородных координатах.
Матрицы Умножение матриц — одна из основных операций над матрицами. Матрица, получаемая в результате операции умножения, называется произведением матриц. Пусть даны две прямоугольные матрицы A и B размерности и соответственно: Тогда матрица C размерностью называется их произведением: где
Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована. В частности, умножение всегда выполнимо, если оба сомножителя — квадратные матрицы одного и того же порядка. Следует заметить, что из существования произведения AB вовсе не следует существование произведения BA.
Пример демонстрирует произведение двух матриц A и B, она показывает как каждые пересечения в произведении матриц соответствуют строкам матрицы A столбцам матрицы B. Размер результирующей матрицы всегда максимально возможный, т. е. для каждой строки матрицы A и столбца матрицы B есть всегда соответствующее пересечение в произведении матрицы. Произведение матриц AB состоит из всевозможных комбинаций скалярных произведений строк матрицы A и столбцов матрицы B.
Значения на пересечениях отмеченных кружочками будут: Элемент x 3, 4 произведения матриц приведённых выше вычисляется следующим образом Первая координата в обозначении матрицы обозначает строку, вторая координата столбец; этот порядок используют как при индексации, так и при обозначении размера. Элемент на пересечении строки i и столбца j результирующей матрицы является скалярным произведением i-й строки первой матрицы и j-го столбца второй матрицы, что объясняет почему ширина и высота умножаемых матриц должны совпадать: в противном случае скалярное произведение не определено.
Алгоритмы быстрого перемножения матриц Алгоритм Штрассена (1969) Первый алгоритм быстрого умножения матриц был разработан В. Штрассеном[2] в 1969. В основе алгоритма лежит рекурсивное разбиение матриц на блоки. Недостатком данного метода является большая сложность программирования по сравнению со стандартным алгоритмом, численная неустойчивость и большой объём используемой памяти. Разработано большое количество алгоритмов на основе метода Штрассена, которые улучшают его численную устойчивость и уменьшают объём используемой памяти. Алгоритм Пана (1978) Алгоритм Бини (1979) Алгоритмы Шёнхаге (1981) Алгоритм Копперсмита — Винограда (1990) Этот алгоритм использует идеи, схожие с алгоритмом Штрассена. На сегодняшний день алгоритм Копперсмита-Винограда является наиболее асимптотически быстрым, но он эффективен только на очень больших матрицах и поэтому не применяется. Алгоритмы с использованием теории групп (2003)В 2003 Кох и др. рассмотрели в своих работах алгоритмы Штрассена и Копперсмита. Винограда в контексте теории групп.
Сжатие/растяжение Это преобразование умножает соответствующие координаты точек на коэффициенты масштабирования по осям: (x, y) -> (ax * x, ay * y). Матрица преобразования запишется следующим образом: [ ax 0 0 ] [ 0 ay 0 ] [ 0 0 1 ] Где ax – растяжение по оси x, ay – растяжение по оси y. Прим. При отрицательных значениях коэффициентов сжатия/растяжения происходит отражение относительно соответствующих осей.
Поворот Матрица поворота выглядит следующим образом: [ cos(a) sin(a) 0 ] [ -sin(a) cos(a) 0 ] [ 0 0 1 ]
Параллельный перенос Исходный вектор (x, y) переходит в (x + tx, y + ty). Матрица преобразования запишется следующим образом: [ 1 0 0 ] [ 0 1 0 ] [ tx ty 1 ]
Отражение Как говорилось в примечании к преобразованию сжатия/растяжения, отражения получаются следующим образом: [ -1 0 0 ] [ 0 1 0 ] [ 0 0 1 ] отражение относительно оси x [ 1 0 0 ] [ 0 -1 0 ] [ 0 0 1 ] отражение относительно оси y
Аффинные преобразования в пространстве
Свойства аффинного преобразования в трехмерном пространстве отображает n-мерный объект в n-мерный: точку в точку, линию в линию, поверхность в поверхность; сохраняет параллельность линий и плоскостей; сохраняет пропорции параллельных объектов – длин отрезков на параллельных прямых и площадей на параллельных плоскостях. На практике удобно задавать аффинное преобразование одной матрицей. При этом используются однородные координаты. Аффинное преобразование будет задаваться следующей матрицей 4 x 4: Первые три значения последней строки равны 0. Это необходимое условие того, что преобразование будет аффинным. В общем случае произвольная матрица размера 4 x 4 задает проективное преобразование.
Частные случаи аффинных преобразований Здесь и в дальнейшем будет использоваться система координат, введенная следующим образом: система координат правая; ось z направлена на наблюдателя, перпендикулярно плоскости экрана; ось y находится в плоскости экрана и направлена вверх; ось x находится в плоскости экрана и направлена вправо.
Параллельный перенос Матрица этого преобразования выглядит следующим образом:
Поворот (вращение) Поворот вокруг осей y, x и z
Масштабирование (сжатие/растяжение, отражение) Коэффициенты сжатия/растяжения, по аналогии с двухмерным пространством, определяются диагональными членами матрицы R:
Сложные аффинные преобразования можно получить как комбинацию простых (элементарных) преобразований. При этом выбирать простые аффинные преобразования можно по разному. Например, поворот можно представить как комбинацию масштабирования и сдвига. Тем не менее, для удобства, поворот также считается элементарным преобразованием.
affin_trans.pptx