美文网首页
Affaine Transformation 浅析

Affaine Transformation 浅析

作者: JaiUnChat | 来源:发表于2017-06-29 20:08 被阅读46次

    Affaine Transformation只要是用在2D图像变换上的的。比如缩放,平移,旋转,扭曲。常用的CATransform3D道理相同

    概述

    Affine Transformation由一个3 x 3矩阵来表示

    作为一个增广矩阵,第三列永远是[0 0 1]。 所以在API中提供的都是对前两列参数的改变。
    下图表示的即是变换过程,图像上的每个点的坐标(x, y, 1),与上图矩阵相乘,产生新的坐标(x', y', 1),也就是我们变化后的图像上点的坐标。


    对于图像上的每个点,通过这样的计算转换到了新的坐标。


    通常不需要直接创建affine transformation, 只需要调用对应的函数 translateBy(x:y:)
    , scaleBy(x:y:)
    , rotate(by:)
    即可

    变换

    如果自定义创建的话,一般都是先创建一个单位矩阵

    let indentity = CATransform3DIdentity // [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]. 
    

    平移

    let transformation = CATransform3DTranslate(transform, tx, ty, tz) 
    

    这个变换实际上发生的是 (代码上是3D,我们的例子跟图上的矩阵保持一致,用2D)

    x' =  ax + cy + tx 
    y' = bx + dy + ty
    

    所以显而易见,tx, ty, tz就是平移移动的距离了
    CATransform3DTranslate(transform, tx, ty, tz)

    相关文章

      网友评论

          本文标题:Affaine Transformation 浅析

          本文链接:https://www.haomeiwen.com/subject/yxlvcxtx.html