当前位置: 首页 > news >正文

大连建设学院网站深圳公布最新出行政策

大连建设学院网站,深圳公布最新出行政策,湛江在线网,合肥定制网站建设源宝导读#xff1a;在前端的开发中我们经常会遇到利用贝塞尔曲线帮助我们完成前端的动画和图形绘制#xff0c;但是对其中的一些参数配置是一头雾水。本文将从贝塞尔曲线的原理讲起#xff0c;由浅入深剖析一阶到多阶贝塞尔的实现原理#xff0c;最后从三个方向来介绍它的… 源宝导读在前端的开发中我们经常会遇到利用贝塞尔曲线帮助我们完成前端的动画和图形绘制但是对其中的一些参数配置是一头雾水。本文将从贝塞尔曲线的原理讲起由浅入深剖析一阶到多阶贝塞尔的实现原理最后从三个方向来介绍它的实际应用。一、IOS图标莫名的舒适感先来对比下面两张图如果你用过苹果手机就都会有一种感觉很多安卓手机的图标都会像左侧图标这样——倒角和直线的过渡处有些许不自然而现在流行的IOS系统图标都是右侧的这种圆润的倒角这种就是有一种说不出来哪里来的舒适感苹果的图标为什么看起来就是比一般的安卓图标要高级在IOS6以及以前的版本上苹果都是用的倒圆角这种图标但是2013年6月苹果在IOS7发布会上苹果将iOS上标志性的圆角图标轮廓作了更新将工业设计中的曲线连续概念应用到了视觉设计之上而这个曲率连续的线就是我们今天要提到的——贝塞尔曲线。二、历史起源贝塞尔曲线(Bézier curve)又称贝兹曲线或贝济埃曲线是应用于二维图形应用程序的数学曲线。贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔Pierre Bézier所广泛发表他运用贝塞尔曲线来为汽车的主体进行设计。现在主流的曲线设计基本都会用到这条曲线常用的矢量图形软件都会通过它来精确画出曲线比如ps的钢笔工具等。三、数学原理这条线到底神器在哪在日常开发中我们常用的是二次贝塞尔曲线和三次贝塞尔曲线二次贝塞尔曲线只需要用到三个点即可绘制出一条的平滑曲率过度自然的曲线而苹果手机的边框和图标的倒角设计则用到了四个点就完成了近乎完美的曲线倒角接下来我们将深入的了解原理看看这条线是如何实现的。1向量在了解贝塞尔曲线之前需要先了解一个定义向量:向量指具有大小和方向的量它可以形象化地表示为带箭头的线段二维里面向量是一个[x,y] ,三维则是[x,y,z]重要的事情说三次下面定义里所有介绍的P0P1...PnABC..都是向量都是向量都是向量目前只讨论二维2一阶贝塞尔曲线和多阶贝塞尔曲线下图是一到四阶的贝塞尔曲线的示意图① 一阶其实很简单看上图第一个图形点A 随着时间t 在P0到P1上运动所有点的集合就是一次贝塞尔曲线。用向量的角度来看一次贝塞尔曲线 B(t)P0P1线段上随着时间t的变化( 0≤ t ≤1 ) P0表示向量 [x0 ,y0] P1表示向量 [x1, y1] A的值B(t)即为公式A P0 (P1-P0)*tA (1-t)P0 t*P1B(t) (1-t)P0 t*P1结论一阶贝塞尔曲线实际就是一条线段。② 二阶他的定义是这样的由P0至P1的连续点A描述一条线段由P1至P2的连续点B描述一条线段由A至B的连续点C:B(t) 描述一条二次贝塞尔曲线。那么这些点肯定遵守下面的规则t (A - P0) / (P1 - P0) ( B- P1) / (P2 - P1)   ( C - A ) / (B - A)最终的公式如下A (1-t)P0 t*P1B (1-t)P1 t*P2C (1-t)A t*BC (1-t)( (1-t)P0 t*P1 )  t * ( (1-t)P1 t*P2 )C (1-t)²P0 2t(1-t)P1 t²P20≤t≤1B(t) (1-t)²P0 2t(1-t)P1 t²P20≤t≤1结论二阶的贝塞尔通过在控制点之间再采点的方式实现降阶, 每一次选点都是一次的降阶。③ 三阶理解了二阶以后三阶可以依葫芦画瓢很快得出A (1-t)P0 t*P1B (1-t)P1 t*P2C (1-t)P2 t*P3D (1-t)A t*BE (1-t)B t*CF (1-t)D t*EF ....结论这个不就是递归嘛总结两个点对应一阶的贝塞尔曲线三个点对应二阶四个点对应三阶每一次的计算都一个降阶计算高阶的贝塞尔可以通过不停的递归直到一阶。个控制点对应着阶的贝塞尔曲线并且可以通过递归的方式来绘制。3公式通用公式或者导数表示感兴趣的同学可以下去研究一下这里就不做过于深入的研究了。四、贝塞尔曲线在前端的应用贝塞尔曲线在web前端主要在三处会用到分别是csssvgcanvas1)     svgsvg的path路径d属性支持二次二阶贝塞尔曲线和三次三阶贝塞尔曲线缩写C和Q例如Q 300 300, 500 100  二阶C 200 200, 400 200,  500 100 三阶我们先来看看一个demo如下图的曲线要实现上图的效果看下图第二行代码svg的path属性当中 d的值M100 100 Q 300 300, 500 100  实际就是对应的二次贝塞尔曲线的三个点 第一个点Q 前面的 100 100 起始点对应P0 第二个点Q后面第一个点 300 300 对应控制点P1 第三个点Q后面的第二个点 500 100  对应结束点 P2依此类推类ball02M100 100 C 200 200, 400 200,  500 100  就是对应的三次贝塞尔曲线的四个点  第一个点C 前面的M 100 100 起始点对应P0  第二个点C后面第一个点 200 200  对应控制点P1  第三个点C后面第二个点 400 200  对应结束点 P2  第四个点C后面第三个点 500 100  对应结束点 P3放代码补充小知识点下面的命令可用于路径path的d属性和offset-path的path属性M movetoL linetoH horizontal linetoV vertical linetoC curvetoS smooth curvetoQ quadratic Belzier curveT smooth quadratic Belzier curvetoA elliptical ArcZ closepath属于贝塞尔曲的有C S Q T2)    css3① offset-path路径offset-path css的移动路径  可以用path的简写语法 上面的svg的代码已写明就是如下这种形式offset-path: path(M100 100 Q 300 300, 500 100)② cubic-bezier函数函数 css3的cubic-bezier函数主要就是在 animation-timing-function设置动画将如何完成一个周期 transition-timing-function 属性设置动画过渡的效果当中使用含义 cubic-bezier(x1,y1,x2,y2)函数具体含义如下如下对应贝塞尔曲线的P0,P1,P2,P3  P0默认值 (0, 0)  P1动态取值 (x1, y1)  P2动态取值 (x2, y2)  P3默认值 (1, 1)技巧 在css3中我们常用的几个过渡效果其实都是用贝塞尔曲线的形式来表示的这些方法名就叫缓动函数文章末尾会附上缓动函数  ease: cubic-bezier(0.25, 0.1, 0.25, 1.0)  linear: cubic-bezier(0.0, 0.0, 1.0, 1.0)  ease-in: cubic-bezier(0.42, 0, 1.0, 1.0)  ease-out: cubic-bezier(0, 0, 0.58, 1.0)  ease-in-out: cubic-bezier(0.42, 0, 0.58, 1.0)注意的点 css3的贝塞尔曲线只有2阶和3阶的并且将贝塞尔曲线做了一个限制除了所有参数必需参数是数字值以外x1 和 x2 需要是 0 到 1 的数字。比较常见transitio的动画例如宽度大小变化颜色渐变位置移动内外边距等animation的话可以结合keyframe 实现一些关键帧动画效果更好Demo3)    canvascanvas比较简单语法如下1. 二阶quadraticCurveTo(x1,y1, x2,y2)2. 三阶bezierCurveTo(x1,y1, x2,y2, x3,y3)上面的二阶三阶 和 svg的 C,Q 是一样的语法就不赘述了。有一个波浪的效果这里全部是用canvas绘制的代码贴在文章末尾。具体代码分三块1.dom区域定义容器和尺寸这个很好理解。第二个区域绘制外圈的圆形drawCircle和波浪效果 drawSin的方法。第三个区域绘制动画利用requestAnimationFrame方法不断的重新绘制波浪效果animation方法不停的重复累加X轴横向位置这样就可以实现一个不断的波浪。五、写在结尾的话贝塞尔曲线这条神器的曲线在前端的应用还是相当广泛的除了常见的css动画过渡效果在svg和canvas的动画当中也必不可少掌握上述的三个方向对面大部分的场景前端的同学都能够游刃有余的去应付。文章如有纰漏可以在评论里指正交流。文中用到的代码链接: https://pan.baidu.com/s/1aMFK4Dehiz5KjddxN704vw  密码: b4041. 曲线篇: 贝塞尔曲线  https://zhuanlan.zhihu.com/p/1366471812. svg路径绘制  http://svg.wxeditor.com/3. 缓动函数 https://www.xuanfengge.com/easeing/easeing/另外附上css3 cubic-bezier函数 缓动效果集合  $easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);  $easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);  $easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);  $easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);  $easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);  $easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);  $easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);  $easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);  $easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);  $easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);  $easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);  $easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);  $easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);  $easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);  $easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);  $easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);  $easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);  $easeInOutExpo: cubic-bezier(1, 0, 0, 1);  $easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);  $easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);  $easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);  $easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);  $easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);  $easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);------ END ------作者简介曹同学 数据分析平台的开发工程师目前负责天际平台相关开发工作。也许您还想看技术分享Java SDK动态数据源和上下文机制技术分享NodeJS分布式链路追踪实现技术分享 | Java SDK 元数据驱动的事件通信架构技术分享Hangfire深度实践技术分享 | APT结合JavaPoet生成模板化Java源代码文件技术分享 | 玩转高效UI自动化测试更多明源云·天际开放平台场景案例与开发小知识可以关注明源云天际开发者社区公众号【建模】文档服务提供高保真打印模式明源云·天际硬核技术认可获华为鲲鹏技术认证书天际·开发者社区“重装发布”
http://www.zqtcl.cn/news/25150/

相关文章:

  • 长沙网站包年优化阳网站建设
  • 餐饮网站设计免费广州网站开发维护
  • 学习网站建设总结网页设计程序代码
  • 营销型网站建设价格贵吗做外贸网站的经验
  • 网站ui广告公司网络推广计划
  • 广州天河区必去的地方网站建设优化广告流量
  • 音乐网站开发文档撰写模板房地产怎么做网站推广
  • 网站建设产品说明书网站付费推广竞价
  • 住房住房和城乡建设部网站重庆网站建设网搜科技
  • 明星静态网站域名注册需要资料
  • 怎么在阿里巴巴做网站甘肃省城乡与建设厅网站首页
  • 旅行社网站建设方案论文西安seo阳建
  • seo的站外优化流程如何快速学会做网站
  • 固始县住房和城乡规划建设局网站建设部标准规范网站
  • 企业网站 源码谷歌搜索引擎网页版入口
  • 百度云 建网站厚街公司网站建设
  • 深圳的网站建设公司哪家好海外推广平台有哪些?
  • 河南省网站建设第三方小程序开发平台
  • 怎么申请一个免费的网站wordpress好还是织梦好
  • 电子系统设计网站制作网页要钱吗
  • 商城网站建设实例需求wordpress 4.5.3 安装
  • 兼职 网站建设国家建设标准发布网站在哪里
  • 网站建设力度百度直播推广
  • 网站首页怎么做营业执照链接免费代理上网ip地址
  • 专业做营销网站wordpress 清理缓存
  • vue.js做个人网站塘厦镇属于东莞哪个区
  • 网站建设项目实施方案金蝶直播软件
  • 酒店设计网站推荐一个人做网站需要多久
  • 国企500强公司有哪些seo网站做推广
  • 网站建设哪里有学卡片式wordpress模板