有一个功能:
CATransform3DGetAffineTransform
返回仿射变换 由't'代表。如果't'不能 确切地表示为仿射 转换返回值是 未定义。
我不是那么以数学为导向,因此易于理解的描述会非常好。维基百科在这里没什么大不了的。
答案 0 :(得分:7)
仿射变换是指在以下意义上不会“过度扭曲”几何体的变换:
因此旋转和缩放是仿射的 - 例如,投影不是。
答案 1 :(得分:1)
仿射变换是转换,但转换不一定是仿射。例如,平面的剪切不是Affine,因为它不会将线发送到线。
仿射变换根据定义是那些保持距离比率并将线发送到线(保留“共线性”)的变换。在有限维欧几里德几何中,它们通过线性变换然后进行平移,即x -> Ax + b
,其中x
是向量,A
是线性变换,b
是矢量。
仿射变换对于改变坐标系统非常有用,可能从一个相当难以想象的系统转换到通常的坐标系。
您在练习中可能遇到的仿射变换是平移,扩张(即缩放),旋转和反射。如果您正在为iOS开发,请查看开发人员文档的CGAffineTransform
部分。这些将解释如何使用几种便捷方法创建仿射变换,以及如何使用-setTransform
消息将这些方法应用于UIView实例。
最后,关于仿射变换的一个重要观点是它们在构图下不是可交换的:应用变换T1
后跟变换T2
通常不同于应用T2
后跟{ {1}}。也就是说,您应用这些事项的顺序。
答案 2 :(得分:0)
CoreAnimation使用3D变换。仿射变换是这些3D变换的2D子集。它们只允许在X,Y平面中进行平移,旋转和缩放。