【Matrix (2D)】 —— 极限研究

来源:互联网 发布:知乎凹凸世界为什么火 编辑:程序博客网 时间:2024/06/03 19:18
Matrix本质透析

自身等同于参数矩阵m乘以自身(先后顺序不可变化...!!)

等价于 —— (prep为使用concat方法对象)
        public static function prependMatrix(base:Matrix, prep:Matrix):void
        {
            prep.setTo(base.a * prep.a + base.c * prep.b,
                       base.b * prep.a + base.d * prep.b,
                       base.a * prep.c + base.c * prep.d,
                       base.b * prep.c + base.d * prep.d,
                       base.tx + base.a * prep.tx + base.c * prep.ty,
                       base.ty + base.b * prep.tx + base.d * prep.ty);
        }


[ 实例matrix ]
(a=1.21243286132, b=0.69999694824, c=-0.69999694824, d=1.21243286132, tx=200, ty=200)
scaleX: 1.4
scaleY: 1.4
rotation: 30
tx: 200
ty: 200
width × height (源画像尺寸): 150 × 220

[ 计算过程 ]
1.  translate (坐标原点位移),得到【第一顶点坐标(tx, ty)】
2.  用rotation换算弧度R,分别得出cos(R),sin(R)...
3.  [ a =  1.21243286132, b = 0.69999694824 ] 取第一行前两个值,可得到【第二顶点坐标(a × cos(R) × width,  b × sin(R) × width)】
4.  [ c = -0.69999694824, d = 1.21243286132 ] 取第二行前两个值,可得到【第三顶点坐标(c ×sin(R) × height, d × cos(R) × height)】
5.  【第四顶点坐标(?? × ??)】可通过得到的前三个坐标推导出来...(自动)





原创粉丝点击