Iphone “一个”和“一个”的区别在哪里;“转变”;及;仿射变换;?

Iphone “一个”和“一个”的区别在哪里;“转变”;及;仿射变换;?,iphone,uikit,core-animation,Iphone,Uikit,Core Animation,有一个函数类似于: CATTransformM3DGetAffinetTransform 返回仿射变换 以“t”表示。如果“不能”,则不能 精确表示为仿射的 转换返回的值为 未定义 我不太懂数学,所以简单易懂的描述会很好。维基百科在这方面帮不了大忙。CoreAnimation使用3D变换。仿射变换是这些3D变换的2D子集。它们只允许在X、Y平面上进行平移、旋转和缩放。仿射变换是不会“过度扭曲”几何体的变换,即: 在变换之前位于直线上的点在变换之后仍然位于直线上 点之间的相对距离保持不变(因此正

有一个函数类似于:

CATTransformM3DGetAffinetTransform

返回仿射变换 以“t”表示。如果“不能”,则不能 精确表示为仿射的 转换返回的值为 未定义


我不太懂数学,所以简单易懂的描述会很好。维基百科在这方面帮不了大忙。

CoreAnimation使用3D变换。仿射变换是这些3D变换的2D子集。它们只允许在X、Y平面上进行平移、旋转和缩放。

仿射变换是不会“过度扭曲”几何体的变换,即:

  • 在变换之前位于直线上的点在变换之后仍然位于直线上
  • 点之间的相对距离保持不变(因此正方形可能不再是正方形,但边长仍然相等)

因此,旋转和缩放是仿射的,例如,投影不是。仿射变换是变换,但变换不必是仿射的。例如,平面的剪切不是仿射的,因为它不会将直线发送到直线


根据定义,仿射变换是那些保持距离比并将直线发送到直线(保持“共线性”)的变换。在有限维欧几里德几何中,它们通过线性变换和平移作用,即
x->Ax+b
其中
x
是向量,
a
是线性变换,
b
是向量


仿射变换对于改变坐标系是很好的,也许从一个很难想象的坐标系回到通常的坐标系

在实践中可能遇到的仿射变换包括平移、膨胀(即缩放)、旋转和反射。如果您正在为iOS开发,那么可以查看开发人员文档的
CGAffineTransform
部分。这些将解释如何使用几种方便的方法创建仿射变换,以及如何使用
-setTransform
消息将这些方法应用于UIView实例


最后,关于仿射变换的一个重要观点是,它们在组合下是不可交换的:应用变换
T1
然后再应用变换
T2
通常不同于应用
T2
然后再应用
T1
。也就是说,应用这些变换的顺序很重要。

这不是真的-仿射变换是保持共线性和距离比的变换。平移、旋转、缩放等在三维空间中也是仿射的。我应该精确地指出,我的答案的范围是Cocoa和NSAffinetTransform。这类似于这个问题: