CSS3trans与transition背后的数学原理.doc_第1页
CSS3trans与transition背后的数学原理.doc_第2页
CSS3trans与transition背后的数学原理.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(很多同学看到大段的数学公式就会发昏,我以人格担保,这里面的数学公式简单的不能再简单了.)transform的原理是计算机图形学中的2D矩阵变换,在开始之前,首先来复习下一个简单的线性代数知识:矩阵与向量乘法。太复的用不到,只需要3维向量与3x3矩阵的乘积:接下来我们来说说transform跟矩阵乘法的关系,我们的任何一个html元素渲染完成后可以得到一张位图,把这张位图上所有的点都做一次矩阵运算,将得到一张的新的位图,这就是transform的基本含义。首先来看最简单的transform,translate。我们都知道tansform:translate(tx,ty);的基本含义是将一个元素的显示位置平移tx,ty。在矩阵变换中,translate体现为下面的矩阵运算:tansform:scale(sx,sy);将一个元素拉伸或者压缩指定的倍数,它对应的矩阵变换是:transform:rotate(a)将一个元素旋转角度a,它对应的矩阵变换是:transform:skew(ax,ay)将一个元素研x向和y向倾斜角度ax和ay,它对应的矩阵变换是:transform:matrix(a,b,c,d,e,f)则是完整的矩阵变换,把这张位图上所有的点都做一次矩阵乘法,得到的新位图transition涉及到的则是另一个数学概念:贝塞尔插值。transition的变换函数有 linear ease ease-in ease-out ease-in-out几种,通常我们尝试使用时能感觉到它们之间稍有不同。实际上,它们是使用了不同的参数进行三次贝塞尔插值计算的结果。所以我们先来复习一下贝塞尔插值:一个量(可以是任何矢量或者标量)从一个值到变化到另一个值,如果我们希望它按照一定时间平滑地过渡,就必须要对它进行插值。最基本的情况,我们认为这个变化是按照时间均匀进行的,这个时候,我们称其为线性插值。而实际上,线性插值不大能满足我们的需要,因此数学上出现了很多其它的插值算法,其中贝塞尔插值法是非常典型的一种。它根据一些变换中的控制点来决定值与时间的关系。K次贝塞尔插值算法需要k+1个控制点,最简单的一次贝塞尔插值就是线性插值,将时间表示为0到1的区间,一次贝塞尔插值公式是:二次贝塞尔插值有3个控制点,相当于对P0和P1,P1和P2分别做贝塞尔插值,再对结果做一次贝塞尔插值计算三次贝塞尔插值则是两次二次贝塞尔插值的结果在做一次贝塞尔插值:回到我们的transition,我们要用到的就是三次贝塞尔插值算法了。把时间认为是0,1区间,待变换属性也认为是0,1区间,那么所有的控制函数都是三次贝塞尔函数:ease 0, 0 0.25, 0.1 0.25, 1.0 1.0,1.0linear 0, 0 0.0, 0.0 1.0, 1.0 1.0,1.0ease-in 0, 0 0.42, 0 1.0, 1.0 1.0,1.0ease-out 0, 0 0, 0 0.58, 1.0 1.0,1.0ease-in-out 0, 0 0.42, 0 0.58, 1.0 1.0,1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论