參數
2D矩陣的表示 matrix(a,b,c,d,e,f),其中6個參數在矩陣的分布:
—— ——
| a c e |
| b d f |
| 0 0 1 |
—— ——
在CSS3中矩陣的原始值是這樣的:
transform: matrix(1,0,0,1,0,0);
任意點(x,y,1)經過matrix變化為(ax+cy+e,bx+dy+f,1)
矩陣平移
matrix(1,0,0,1,e,f)
e: 矩陣x坐標平移值,正向平移e
f: 矩陣y坐標平移值,正向平移f
css3中方向,單位為px
|
|
--------->x
|
↓y
結論:平移只有跟e和f有關系,跟其他a,b,c,d沒有關系,e對應x軸的平移,f對應y軸的平移,往正方向平移多少單位就加上多少單位,反之則減去多少個單位。
矩陣縮放
matrix(a,0,0,d,0,0)
a: 矩陣寬度縮放a倍,默認為1不縮放
d: 矩陣高度縮放d倍,默認為1不縮放
結論:縮放只有跟a和d有關系,跟其他數值都無關,a對應x軸縮放,d對應y軸縮放,縮放多少倍就乘以多少
矩陣旋轉
matrix(cosθ,sinθ,-sinθ,cosθ,0,0);
sinθ和cosθ最大值為1 最小值為-1,當a b c f四個參數符合公式的規律是則為旋轉
往順時針方向旋轉45°
a = cos45° = 0.707
b = sin45° = 0.707
c = -sin45° = -0.707
d = con45° = 0.707
matrix(0.707,0.707,-0.707,0.707,0,0);
往順時針方向旋轉90°
a = cos90° = 0
b = sin90° = 1
c = -sin90° = -1
d = con90° = 0
matrix(0,1,-1,0,0,0);
往順時針方向旋轉180°
a = cos180° = -1
b = sin180° = 0
c = -sin180° = 0
d = con180° = -1
matrix(0,1,-1,0,0,0);
結論:得知旋轉的度數,根據用sin cos算出相應的值填寫
矩陣拉伸
matrix(1,tanθ,tanθ,1,0,0)
b:矩陣以X軸做偏移,偏移后X軸和右邊的角度Y°,tanY° = b的值 (左邊不變,右邊向Y正方向偏遠)
c:矩陣以Y軸做偏移,偏移后Y軸和左邊的角度X°,tanX° = c的值 (底邊不變,頂邊向X正方向偏遠)
matrix(1,2,0,1,0,0)
matrix(1,0,2,1,0,0)
參考
詳細及原理請參考文章:
對CSS3中的transform:Matrix()矩陣的一些理解
https://www.cnblogs.com/Ivy-s/p/6786622.html
理解CSS3 transform中的Matrix(矩陣)
https://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/