Что такое аффинные преобразования?

21

Что такое аффинные трансформации? Они применимы только к точкам или другим фигурам? Что это значит, что они могут быть «составлены»?

Люзер Дрог
источник

Ответы:

23

Аффинное преобразование - это линейное преобразование + вектор перевода.

[xy]=[xy][abcd]+[ef]

Это может быть применено к отдельным точкам или к линиям или даже кривым Безье. Для линий это сохраняет свойство, что параллельные линии остаются параллельными. Для кривых Безье это сохраняет свойство выпуклой оболочки контрольных точек.

После умножения получается 2 уравнения для получения «преобразованной» пары координат (x,y) из исходной пары (x,y) и списка констант (a,b,c,d,e,f) ,

x=ax+cy+ey=bx+dy+f

Удобно, что Линейное преобразование и Вектор Трансляции могут быть объединены в трехмерную матрицу, которая может работать над двумерными однородными координатами.

[xy1]=[xy1][ab0cd0ef1]

Который дает те же 2 уравнения выше.

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

[xy1]=([xy1][ab0cd0ef1])[gh0ij0km1]=[ax+cy+ebx+dy+f1][gh0ij0km1]=[g(ax+cy+e)+i(bx+dy+f)+kh(ax+cy+e)+j(bx+dy+f)+m1]T=[xy1]([ab0cd0ef1][gh0ij0km1])=[xy1][ag+biah+bj0cg+dich+dj0eg+fi+keh+fj+m1]

В качестве альтернативы вы можете рассмотреть несколько основных типов преобразования и составить любое более сложное преобразование, комбинируя их (умножая их вместе).

Преобразование идентичности

преобразование идентичности

[100010001]

пересчет

пересчет

[Sx000Sy0001]

* Примечание: отражение может быть выполнено с параметрами масштабирования или ( 1 , - 1 ) .(Sx,Sy)=(1,1)(1,1)

Перевод

перевод

[100010TxTy1]

Перекос х на у

перекос х у

[1Qx0010001]

Перекос y на x

перекос х на х

[100Qy10001]

вращение

вращение

[cosθsinθ0sinθcosθ0001]

[Примечание. Я показал форму Matrix, которая принимает вектор строки слева . Транспонирование этих матриц будет работать с вектором столбца справа.]

Матрица, составленная исключительно из масштабирования, вращения и перемещения, может быть разложена обратно на эти три компонента .

Люзер Дрог
источник
5
Отличный ответ. Вы можете добавить, что одним из способов думать об аффинных преобразованиях является то, что они держат параллельные линии параллельно. Следовательно, масштабирование, вращение, перемещение, сдвиг и комбинации считаются аффинными. Перспективная проекция является примером неаффинного преобразования.
ap_
2
Вы можете добавить несколько фотографий. Если вы этого не сделаете, я буду: P Также было бы хорошо упомянуть порядок в матрице и ориентация строки / столбца является произвольной. И то, что вращения в 3d не коммутативны.
Joojaa
2
@joojaa Я сделал фотографии! источники постскриптума
luser droog
1
Также стоит упомянуть, что преобразования твердого тела являются подмножеством аффинных преобразований, а аффинные преобразования являются подмножеством перспективных преобразований.
user1118321
Я продолжаю перечитывать это время от времени, и я не могу точно сказать, но я мог бы неправильно описать перекос преобразований. Перегибы сбивают с толку. Если кто-то видит это и хочет попробовать редактирование, помогите прояснить эту часть!
Луер Дрог