`
leeqq
  • 浏览: 137091 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

学习transform matrix

    博客分类:
  • web
阅读更多

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

 

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

 

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

transform:translate(80px)


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

 

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


 

transform:scale(2) 放大2倍

 

transform:skew(45deg) 倾斜45°

 
 上面只是对translate,rotate,scale,skew几种的简单应用,更多可参考网上其它资料,比如scale设负数会翻转并进行伸缩

 

下面讲讲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)  ?

转换为矩阵如下


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


 

再看知道了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的对应关系


 

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

 

 

 

 

  • 大小: 681 Bytes
  • 大小: 1.1 KB
  • 大小: 1.1 KB
  • 大小: 801 Bytes
  • 大小: 3.7 KB
  • 大小: 1.4 KB
  • 大小: 2.8 KB
  • 大小: 24.2 KB
分享到:
评论

相关推荐

    Matrix Transpose_matrixtransposition_

    描述“Transform Matrix - Transpose Matrices”进一步强调了矩阵转置是一个变换过程。这个过程不仅改变矩阵的形状,还保持其元素不变,只是位置发生了变化。转置矩阵是保持矩阵元素总数不变的一种方式,它允许我们...

    AS3中Matrix类

    - 可以使用`DisplayObject.transform.matrix`属性来应用Matrix对象,如`mySprite.transform.matrix = m`,这将改变`mySprite`的变换矩阵,从而实现指定的图形变换。 4. 深入学习: - Matrix类还可以与其他类结合...

    Covariance Estimation for High Dimensional Data Vectors Using the Sparse Matrix Transform

    具体来说,协方差矩阵被约束为具有可以表示为稀疏矩阵变换(Sparse Matrix Transform, SMT)的特征分解。SMT通过一系列两两坐标旋转(即Givens旋转)的乘积形成。利用这个框架,可以通过贪心地最小化对数似然函数来...

    应用源码之Matrix.zip

    总之,“应用源码之Matrix.zip”为我们提供了一个深入学习和实践Matrix的好机会。通过对源码的分析,我们可以更直观地理解Matrix的内部实现,从而在实际开发中更加熟练地运用这个强大的工具。同时,这也能帮助开发者...

    Bitmap_transform.rar_Bitmap Transform_bitmap

    在计算机图形学和图像处理领域,Bitmap(位图)是一种常见的图像格式,它存储的是像素的二维数组。Bitmap Transform指的是对位图进行的...学习并掌握Bitmap变换不仅可以提升你的编程技能,还能为各种视觉项目提供支持。

    Matrix_Computations_for_Signal_Processing

    ### 矩阵计算在信号处理中的应用 #### 前言 《Matrix_Computations_for_Signal_...通过学习本书,读者能够掌握如何有效地利用矩阵工具解决信号处理中的实际问题,为从事相关领域的研究和工作打下坚实的基础。

    VB6旋转(小白专用)

    在VB6中,我们可以使用TransformMatrix模块来处理这些变换。 TransformMatrix.bas文件很可能是包含了一个自定义模块,用于处理二维坐标系统的矩阵变换。在这个模块中,可能定义了一些函数或子过程,用于创建旋转...

    Matrix3d图片视频坐标自动生成

    '-webkit-transform': matrix, '-moz-transform': matrix, '-ms-transform': matrix, '-o-transform': matrix, 'transform': matrix }); } ``` "php中文网免费下载站.txt"和"php中文网下载站.url"可能是资源...

    人工智能和机器学习库SwiftAI.zip

    Swift AI 是高性能的人工智能和机器学习库,完全用 Swift 编写,目前支持 iOS and OS X,未来将支持更多平台。 Swift AI 包括一组人工智能和机器学习的通用... Fourier Transform Functions 标签:Swift

    10种纯CSS3 transform鼠标悬停到图片上过渡动画效果

    `transform: matrix(a, b, c, d, tx, ty)`是所有变换的综合形式,它可以组合以上所有变换。虽然复杂,但能实现更精细的控制。 6. **混合模式动画** (多个变换组合) 通过将不同的变换属性组合在一起,如`transform...

    使用VB.NET进行基本Directx转换

    transformMatrix.M11 = scale '缩放因子 transformMatrix.M22 = scale transformMatrix.M33 = 1.0F transformMatrix.M41 = translationX '平移 transformMatrix.M42 = translationY transformMatrix.M44 = 1.0F '...

    机器学习学习及sklearn的使用.zip

    4. **预测**:用transform或predict方法对新数据进行预测。 5. **评估模型**:使用评估指标检查模型性能,可能需要调整模型参数以优化性能。 6. **模型部署**:将训练好的模型应用于实际场景。 在"content"这个文件...

    CSS3 transform图标加载代码.zip

    在现代网页设计中,CSS3的`transform`属性是一个强大的工具,它...通过这个"CSS3 transform图标加载代码"项目,你可以学习到如何结合CSS3、JavaScript和HTML5创建动态、引人入胜的加载动画,为用户提供更佳的交互体验。

    02-Transform.rar

    在图像处理领域,旋转是常见的操作之一,它允许我们根据需求改变图像...综上所述,"02-Transform"可能涵盖了上述知识点,通过这个压缩包的学习,你可以深入理解图像旋转的原理和实现方法,以及在实际应用中的注意事项。

    Matrix.org虚拟现实演示_JavaScript_CSS_下载.zip

    通过这个项目,你可以学习到如何使用JavaScript和CSS来创建WebVR体验,理解WebVR的基本架构,以及如何将去中心化的Matrix通信平台集成到虚拟现实中。此外,你还可以深入研究Three.js或A-Frame的文档,了解如何利用...

    C#绘图练习

    在绘图时,将Matrix对象应用到Graphics对象的Transform属性上,即可改变绘制的坐标系统,从而实现预期的图形效果。 接下来,我们讨论渐变色。在C#中,可以通过GradientBrush类实现渐变色填充。线性渐变...

    3D transform tutorial

    7. **CSS3中的3D转换**:在Web开发中,CSS3提供了transform属性支持3D转换,包括translate3d()、rotate3d()、scale3d()以及matrix3d()函数。结合transition和animation,可以创建出丰富的交互效果。 8. **WebGL与3D...

    vc++编程实现数字图像的线性变换

    cv::Mat transformMatrix(3, 3, CV_32FC1, cv::Scalar(contrastFactor, contrastFactor, contrastFactor, -0.5 * contrastFactor, -0.5 * contrastFactor, -0.5 * contrastFactor, 1, 1, 1)); ``` 其中,`...

    gl-matrix插件实现的立方体矩阵脉冲动画变换效果源码.zip

    CSS3提供了transform属性,可以对元素进行2D和3D变换,如translate()、rotate()和scale()。在本项目中,CSS3可能被用来设置初始的3D视口,定义透视效果,以及控制3D元素在屏幕上的位置和大小。 压缩包中的唯一文件...

Global site tag (gtag.js) - Google Analytics