矩陣matrix變換的用法(css3屬性transform: matrix)


參數

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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM