有像函數:「變換」和「仿射變換」之間的區別在哪裏?
CATransform3DGetAffineTransform
返回仿射變換通過 't' 表示 。如果't'不能被 恰好表示爲仿射 變換,返回值是 未定義。
我不是那麼以數學爲導向,所以一個容易理解的描述將是非常好的。維基百科在這裏沒有什麼大的幫助。
有像函數:「變換」和「仿射變換」之間的區別在哪裏?
CATransform3DGetAffineTransform
返回仿射變換通過 't' 表示 。如果't'不能被 恰好表示爲仿射 變換,返回值是 未定義。
我不是那麼以數學爲導向,所以一個容易理解的描述將是非常好的。維基百科在這裏沒有什麼大的幫助。
CoreAnimation使用3D變換。仿射變換是這些3D變換的2D子集。它們只允許在X,Y計劃中進行平移,旋轉和縮放。
這是不正確的 - 仿射變換是保持共線性和距離比率的變換。翻譯,旋轉,縮放等等也都是三維的。 – 2009-05-19 13:18:03
仿射變換是變換不「過分扭曲」幾何體在這個意義上:
所以旋轉和縮放是仿射投影,例如,不是。
仿射變換是變換,但變換不一定是仿射。例如,飛機的剪切不是仿射的,因爲它不會將線條發送到線條。
仿射變換定義爲保留距離比率並將線條發送到線條(保留「共線性」)的那些變換。在有限維歐幾里得幾何中,這些通過線性變換,接着是平移,即x -> Ax + b
,其中x
是矢量,A
是線性變換,而b
是矢量。
仿射變換對於改變座標系很有用,可能是因爲很難將其視覺化回常規座標系。
實踐中可能遇到的仿射變換是平移,擴張(即縮放),旋轉和反射。如果您正在爲iOS開發,請查看開發者文檔的CGAffineTransform
部分。這些將解釋如何使用多種便利方法創建仿射變換,以及如何使用-setTransform
消息將它們應用於UIView實例。
最後,關於仿射變換的重要一點是,他們在組成不可交換:應用變換,然後變換T2
T1
是不同一般的應用T2
其次T1
。也就是說,您應用這些事項的順序。
這與此問題類似:http://stackoverflow.com/questions/567829/catransform3d-vs-cgaffinetransform – 2009-05-19 17:56:36