欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习transform matrix

程序员文章站 2022-06-01 21:16:04
...

这两天有时间学习了一下css里面transfrom的matrix的用法,下面做个记录

 

css中transform是用来做变形的,支持rotate(旋转),translate(偏移),scale(伸缩),skew(倾斜),matrix(矩阵变换),其中前四种的可以说是matrix的简化,只针对某一种变换,而且更容易理解。

 

先简单说一下rotate, translate, scale, skew

transform:translate(80px)

学习transform matrix
 原本1和2重合在一起的,应用了上面的translate后向右偏移了80px

 

transform:rotate(45deg) 顺时针45°

学习transform matrix
 

transform:scale(2) 放大2倍
学习transform matrix

 

transform:skew(45deg) 倾斜45°
学习transform matrix
 
 上面只是对translate,rotate,scale,skew几种的简单应用,更多可参考网上其它资料,比如scale设负数会翻转并进行伸缩

 

下面讲讲matrix

先看个例子

学习transform matrix
 1,2,3div原本同样位置,

 

.m1{
    transform-origin: 0px 0px;
    transform:matrix(1.4488, 0.38820, 1.06060, 1.83700, 222.16290, 59.52840)
}
.m2{
    transform-origin: 0px 0px;
    transform: rotate(15deg) translateX(230px) scale(1.5) skewX(45deg);
}

 1和2用的是不同的样式,结果是一样的matrix可以一次实现rotate, translate, scale, skew

 

 

下面看看怎么实现的

matrix有6个参数transform:matrix(a,b,c,d,e,f)   这里说的是2d变换,不考虑3d变换

网上不少文章做了解释如何用matrix实现rotate, translate, scale, skew。 如下

transform: matrix(1, 0, 0, 1, e, f) 表示 translate(e, f)x方向偏移e, y方向偏移f

transform: matrix(a, 0, 0, d, 0, 0) 表示 scale(a, d) x方向a倍,y方向b倍

transform: matrix(cosθ,sinθ,-sinθ,cosθ,0,0) 表示 rotate(θ) 旋转角度θ

transform: matrix(1,tanθ,tanβ,1,0,0) 表示 skew(β, θ)  x方向倾斜β,y方向倾斜θ

 

那难道用matrix的时候只能按照这四种格式用么,那还有什么意义,直接用rotate……这些不就好了,简单易懂,看上面的例子就知道了,matrix可以同时实现rotate, translate, scale, skew的

那在matrix中随便写参数如何变换,知道了rotate, translate, scale, skew如何写成matrix

 

先看matrix中随便写参数如何变换transform:matrix(a,b,c,d,e,f)  ?

转换为矩阵如下

学习transform matrix
 用这个矩阵乘以位置坐标(x,y)的矩阵,即可得到新位置坐标(ax+cy+e,bx+dy+f)

学习transform matrix
 

再看知道了rotate, translate, scale, skew如何写成matrix ?

transform: rotate(15deg) translateX(230px) scale(1.5) skewX(45deg)

是怎么转换成

transform:matrix(1.4488, 0.38820, 1.06060, 1.83700, 222.16290, 59.52840)

也很简单

用上面讲到的将roate(15deg) translateX(230px) scale(1.5) skewX(45deg)分别转换为matrix,然后相乘,就可以得到结果

 附一个rotate……到matrix的对应关系

学习transform matrix
 

如果对矩阵运算不熟悉,推荐 “云算子” 在线求解

 

 

 

 

相关标签: transform matrix