css3 matrix()矩陣


參數

  matrix()有六個參數:matrix(a,b,c,d,e,f);

  這六個參數組成的矩陣與原坐標矩陣相乘計算坐標;

計算

  獲取當前元素的所有像素點坐標並計算

  x' = ax+cy+e

  y' = bx+dy+f

簡單例子

 偏移

    坐標公式應該為:x' = x + 偏移量;     y‘ = y + 偏移量

   套用上面的公式那么應該:a = 1; b = 0;c = 0;d = 1; e = x偏移量;f = y偏移量

   matrix(1, 0, 0, 1, x偏移量, y偏移量)

   縮放

    x' = x*x縮放倍數 ;    y’ = y*y縮放倍數

   a = x縮放倍數 ; b = 0; c = 0;   d = y縮放倍數 ; e = 0; f = 0

   matrix(x縮放倍數, 0, 0, y縮放倍數, 0, 0);

   如:縮小一半,    matirx(0.5,0,0,0.5,0,0);

 傾斜

   x' = a*x + c*y ;    y' = b*x +d*y

   a = cosθ; b = sinθ; c = sinθ; d = cosθ; e = 0; f = 0;

   matrix(cosθ, sinθ, sinθ, cosθ, 0, 0);

   如:要水平傾斜30度,只需計算出cos30°和sin30°的值,作為參數a和c的值        matrix(0.866,0,0.5,1,0,0);

   垂直傾斜同理;

 旋轉

   只需:水平傾斜角度 = -垂直傾斜角度

   如:要順時針旋轉30度,        matrix(0.866,0.5,-0.5,0.866,0,0);

上面的都可以用CSS3 transform提供的translate()  rotate()  scale() 方法實現,但有些效果不能實現。(如:鏡像)

  水平鏡像:(y坐標不變,x坐標變負)

  所以:a=-1; b=0; c=0; d=1; e=0; f=0;簡化得:
  x' = -x;
  y' = y

 

  垂直鏡像:(x坐標不變,y坐標變負)

  所以:a=1; b=0; c=0; d=-1; e=0; f=0;簡化得:
  x' = x;
  y' = -y

 

  水平鏡像+倒立:(y坐標變負,x坐標變負)

  所以:a=-1; b=0; c=0; d=-1; e=0; f=0;簡化得:
  x' = -x;
  y' = -y

 

  90度旋轉+鏡像:(x'=y,y'=x)

  所以:a=0; b=1; c=1; d=0; e=0; f=0;簡化得:
  x' = y;
  y' = x

 

  -90度旋轉+鏡像:(x'=-y,y'=-x)

  所以:a=0; b=-1; c=-1; d=-0; e=0; f=0;簡化得:
  x' = -y;
  y' = -x

  

  一些簡單的參數實現的效果

  由於計算比較麻煩,對於tranform的其他方法能實現的,還是用那些方法。

 


免責聲明!

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



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