什么是仿射变换?


Answers:


23

仿射变换是线性变换+平移矢量。

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

它可以应用于单个点或线,甚至可以应用于贝塞尔曲线。对于线,它保留了平行线保持平行的属性。对于贝塞尔曲线,它保留了控制点的凸包属性。

相乘后,它产生2个方程,从原始对和常数列表产生一个“变换的”坐标对。。 X Ý 一个b c ^ d ê ˚F X ' = 一个X + C ^ ÿ + È(x,y)(x,y)(a,b,c,d,e,f)

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

可以方便地将线性变换和平移矢量放到一个3D矩阵中,该矩阵可以在2D同构坐标上进行运算。

[xy1]=[xy1][ab0cd0ef1]

上面的方程式相同。

非常方便的是,矩阵本身可以相乘以生成第三矩阵(常数),该矩阵执行与原始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]

*注意:可以使用缩放参数或进行反射。(Sx,Sy)=(1,1)(1,1)

翻译

翻译

[100010TxTy1]

歪斜x y

y倾斜x

[1Qx0010001]

歪斜y x

y歪斜x

[100Qy10001]

回转

回转

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

[注意,我在这里显示了Matrix的形式,它在左边接受行向量。这些矩阵的转置将与右侧的列向量一起使用。]

纯粹由缩放,旋转和平移组成的矩阵可以分解回这三个分量


5
好答案。您可能需要添加一种考虑仿射变换的方法,即它们使平行线保持平行。因此,缩放,旋转,平移,剪切和组合被视为仿射。透视投影是非仿射变换的一个示例。
ap_

2
您可以添加一些图片。如果您不愿意,我会:P也可能会提到矩阵的顺序,行/列的方向是任意的。而且3d中的旋转不是可计算的。
joojaa 2015年

2
@joojaa我拍了照片!后记消息来源
luser droog 2015年

1
值得一提的是,刚体变换是仿射变换的子集,而仿射变换是透视变换的子集。
user1118321 '16

我会不时地重新阅读它,我不太清楚,但是我可能对歪斜变换的描述是错误的。歪斜令人困惑。如果有人看到此内容并想尝试编辑,请帮助澄清该部分!
luser droog
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.