Android与IOS的Transform图形变换矩阵之间快速转换方法

首先,为了实现快速的转换,我们必须了解两者之间的异同。
IOS:
IOS的Transform matrix 形式是这样的:

        a    b    0
        c    d    0
        tx   ty   1

其中,

       a :缩放X    b :错切Y     0
       c :错切X    d :缩放Y     0
       tx:位移X    ty:位移Y     0

当进行位图片操作的时候,假设元像素点坐标为(x,y,1)
则:

           |a    b    0|
(x,y,1)*|c    d    0| =(ax + by +tx,bx + dy + ty,1)
           |tx   ty   1|

当进行变换时,根据具体需求,分别改动对应矩阵的对应值,就可以实现想要的效果了,这些实现都被IOS封装到了Transform类方法之中了

Android
Android的Transform matrix 形式是这样的:

        a    c    tx
        b    d    ty
        0    0    1

其中,

       a :缩放X    c :错切X     tx:位移X
       b :错切Y    d :缩放Y     ty:位移Y
       0           0            1

当进行位图片操作的时候,假设元像素点坐标为(x,y,1)
则:

|a    c    tx|  |x|
|b    d    ty|* |y|=(ax + by +tx,bx + dy + ty,1)
|0    0    1 |  |1|

由此不难看出,IOS和Android的Transformation Matrix 是互为转置矩阵关系。所以我们有算法:

    for( int k = 0; k < 9; k++){
        int n = (k % 3) * 3 + k / 3;
        matrix[k] = matrix[k] + matrix[n];
        matrix[n] = matrix[k] - matrix[n];
        matrix[k] = matrix[k] - matrix[n];
    }

来实现两者之间的转换。
使用时,将此算法嵌入到程序中即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值