贝塞尔曲线和贝塞尔曲面

当您需要高级功能时,GSAP插件非常有用。 我将在本教程中解释的BezierPlugin可以帮助沿定义为点/值数组的弯曲贝塞尔曲线路径上的几乎任何一个或多个属性设置动画。 在跳入之前,我们应该花一点时间来了解贝塞尔曲线是什么以及它来自何处。

贝塞尔曲线

早在原始手绘时,图形设计师就非常熟悉称为“法语曲线”的工具。 这些形状奇特的零件(通常是薄塑料)有助于指导设计师创建优雅的曲线,就像我们今天在Illustrator中使用钢笔工具所看到的那样。

许多图形设计师和印刷商使用的称为法国曲线的原始手工工具(src: Wikipedia )

这些复杂的路径我们称为“贝塞尔曲线”。 在数字世界中,它们被表示为一系列点,这些点是通过数学计算得出的,目的是将线条弯曲成优雅而华丽的形状。 更具体地说,贝塞尔曲线用于使用通过路径连接在一起的一系列绘制点对平滑曲线建模。

数字显示的贝塞尔曲线。 上面的示例取自Illustrator的钢笔工具:综合指南

BézierCurves于1962年由法国工程师PierreBézier广泛宣传,他使用这些华丽的路径在雷诺设计了车身。 但是,贝塞尔曲线的最初研究是1959年由数学家Paul de Casteljau使用de Casteljau算法开发的,该算法是一种数值稳定的方法,用于评估雪铁龙的贝塞尔曲线。 矢量插图画家应归功于汽车行业!

对于疯狂的好奇,这是对贝塞尔曲线的一个很好的解释,称为立方贝塞尔曲线-引擎盖下更详细地解释了该曲线是如何在数学和视觉原理上诞生的。

贝塞尔类型

与Bézier融为一体可以使您成为绝地绝顶,但是只有真正的BézierJedi才能理解Bézier曲线的各种类型和风格。最常见的曲线通常是QuadraticCubic ,在大多数用例中都会看到。

  • 线性贝塞尔曲线:直线,两端各有两个点。
  • 二次贝塞尔曲线:三点曲线。
  • CubicBézier :四个点的曲线,但是点的数量与Cubic无关,因此我们可以使用五个点,六个点甚至七个点!

贝塞尔(Bézier)补间与GSAP

在我们再次投入GSAP之前,请务必注意, 出于上述原因 ,我正在使用TweenMax。 BezierPlugin已经为我们打包了!

云形尺

正如我在《 GreenSock旅程 》 开始时向您展示的那样 ,我们实例化了一个时间轴,以便可以给此动画一个展示自己的舞台,以及一种控制每个序列的方式。

假设我们已经设置了时间轴并对其进行了排序,我们可以检查如何编写和使用BezierPlugin 。 请注意,我们的贝塞尔曲线路径值只是一系列x和y坐标,称为笛卡尔坐标系。 创作时,开发人员必须确保数组中的每个对象都具有匹配的属性名称。

var bezier_path = [{x: value, y: value}, {x: value, y: value}];tl.staggerTo(element, duration, { bezier: {type: 'thru',values: bezier_path,curviness: 1},ease: Power1.easeInOut}, stagger_value);

假设我们已经指向SVG圆,将选择器传递到您看到element ,然后也设置了duration 。 给xy值和curviness1将导致我们的像这样的圆形轨道上SVG动画圆:

检查源以获取使它起作用的更多详细信息。

由于thru是默认的Bézier type ,因此您根本不需要定义类型。 像curvines一样增加和调整值可以为动画传播创造一些非常有趣的路径。 使用上面看过的圆,我可以随意添加更多的SVG圆并调整弯曲度值(准确地说是12)。

贝塞尔类型

这是公认的各种贝塞尔风格的摘要。 如果计划使用curviness属性(允许您调整贝塞尔curviness的张力),则必须确保使用thru类型。

  • thru (默认):插件说明了如何使用专有的GreenSock算法通过提供的值自然绘制贝塞尔曲线。
  • soft :数组中提供的值几乎像磁铁一样吸引着朝向它们的曲线,但是贝塞尔曲线通常不会穿过它们。
  • quadratic :定义标准二次Bezier数据(二次Bezier在每个锚点之间都有一个控制点)。
  • cubic :允许您定义标准三次贝塞尔曲线数据(三次贝塞尔曲线在每个锚点之间都有两个控制点)。
  • thruBasic :与thru相同,不同之处在于它通过提供的值对贝塞尔曲线的初始绘制使用了一种不太复杂的算法。

动画其他属性

BezierPlugin还允许开发人员为x和y坐标以外的其他属性设置动画。 实际上,您可以为其他属性设置动画,例如变换,不透明度等等! 这样做不是很普遍,但完全有可能。 旋转,缩放甚至自定义示例之类的属性!

例如,正如我将要演示的那样,我们可以对opacity以及x和y进行动画处理(请注意,数组中的每个对象必须具有opacity属性才能匹配)。

var bezier = [{ x: 0, y: 0, opacity: 0 }, { x: 0, y: 42, opacity: 0 }, { x: 42, y: 42, opacity: 1 }, { x: 42, y: 0, opacity: 1 }, { x: 0, y: 0, opacity: 0 }];

走得更远

让我们看看其他一些功能,以备不时之需。

自动旋转

此功能根据目标在贝塞尔曲线路径上的位置自动旋转目标。

卷动

如果您想要花哨的东西,那么就可以像Jan Paepke为其ScrollMagic项目演示的那样, 花哨并在Bézier路径上为对象设置动画。 定义曲线点并在补间定义中提供它们,以便沿定义的曲线进行动画处理。

下次

请继续关注我在这个TimelineMax系列中的下一个冒险,在其中我将您带入另一个名为Draggable的 GSAP插件中。 使用可拖动的动力时间表,我们将进行实验以创建一个滑出菜单,可在其中拖动菜单以将其打开以打开并拖动以将其关闭。 动画专家见!

翻译自: https://webdesign.tutsplus.com/tutorials/timelinemax-getting-a-handle-on-bezier-tweening--cms-23981

贝塞尔曲线和贝塞尔曲面

贝塞尔曲线和贝塞尔曲面_TimelineMax:处理贝塞尔(Bézier)补间相关推荐

  1. unity 控制点 贝塞尔曲线_在Unity中使用贝塞尔曲线(转)

    鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是 ...

  2. 史上最全的贝塞尔曲线(Bezier)全解(一):初识贝塞尔曲线

      作为一个有只志向的码农,除了知道一些基本的知识够自己努力搬砖以外,还应该get一些更炫酷的技能,用更优雅的姿势进行搬砖;想要实现一些十分炫酷的效果,贝塞尔曲线就必须进行一些研究了; 最近一段时间, ...

  3. android 贝塞尔曲线点击区域,白话经典贝塞尔曲线及其在 Android 中的应用

    一.前言 谈到贝塞尔曲线可能不少人会浮现它高大上的数学公式.然而,在实际应用中,并不需要我们去完全理解或者推导出公式才能应用得上.实际情况是,即使真的只是一个学渣,我们应该也能很轻松的掌握贝塞尔曲线的 ...

  4. canvas贝塞尔曲线爱心_canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)

    写在最前 由于原生的Canvas最高只支持到三阶贝塞尔曲线,那么我想添加多个控制点怎么办呢?(即便大部分复杂曲线都可以用3阶贝塞尔来模拟)与此同时,关于贝塞尔控制点的位置我们很难非常直观的清楚到底将控 ...

  5. unity 控制点 贝塞尔曲线_在Unity中使用贝塞尔曲线

    前言 最近项目需要呈现各种轨道且随机性较强,在找了一天插件后打算自己实现平滑曲线,思路是策划对关卡中的轨道放置任意个节点,我通过代码将所有节点绘制成一条平滑的曲线,每两个节点之间通过三阶贝塞尔实现,最 ...

  6. css贝塞尔曲线 多个点_了解贝塞尔曲线的数学和Python实现示例

    贝塞尔曲线在计算机图形学中被大量使用,通常可以产生平滑的曲线.如果您曾经使用过Photoshop,则可能会发现名为"锚点"的工具,您可以在其中放置锚点并用它们绘制一些曲线,这些也是 ...

  7. 用html贝塞尔曲线绘制海豚,使用画布绘制贝塞尔曲线

    1,二次贝塞尔曲线 quadraticCurveTo(cpx,cpy,x,y)//cpx,cpy表示控制点的坐标,x,y表示终点坐标: 数学公式表示如下: 二次方贝兹曲线的路径由给定点P0,P1,P2 ...

  8. 11、计算机图形学——几何(贝塞尔曲线与曲面)

    一.贝塞尔曲线 1.1.简介 下图中蓝色的线就是贝塞尔曲线,每条贝塞尔曲线都有控制点(下图中有四个),贝塞尔曲线必须经过第1个和最后一个控制点,并且需要和第起止控制点相切 1.2.如何得到贝塞尔曲线 ...

  9. 光滑曲线_计算机图形学十:贝塞尔曲线与贝塞尔曲面

    贝塞尔曲线与贝塞尔曲面 1 贝塞尔曲线(Bézier Curves) 在进入具体原理讲解之前,首先看一下一条实际的贝塞尔曲线长什么样子 其中 为 控制点,蓝色所表示曲线正是非常著名的贝塞尔曲线了,可以 ...

  10. 贝塞尔曲线与贝塞尔曲面

    1. 贝塞尔曲线(Bézier Curves) 在进入具体原理讲解之前,首先看一下一条实际的贝塞尔曲线长什么样子 其中为控制点,蓝色所表示曲线正是非常著名的贝塞尔曲线了,可以从图中观察到,曲线会与初始 ...

最新文章

  1. Android动态方式破解apk进阶篇(IDA调试so源码)
  2. 逻辑回归模型(Logistic Regression, LR)基础
  3. ModelSim入门及Testbench编写——合理利用仿真才是王道
  4. 二值图像连通 C语言,二值图像统计连通区域C语言版
  5. @FeignClient 接口调用
  6. MongoDB在不同主机间复制数据库和集合的教程_MongoDB_脚本之家
  7. 省钱攻略送上!戴尔官网OptiPlex商用台式机到手仅需2279元!速速抢购!
  8. 五、分治法应用--矩阵乘法
  9. oracle立即关闭数据库,Oracle数据库的起步和关闭
  10. scheme http https 区别 tls_HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系
  11. linux复制以a开头的文件,linux部分试题
  12. 关于欧几里德第五公设的感言
  13. 2022年计算机二级考试 Web程序设计模拟题及答案
  14. 基于ELK 7.50搭建elastalert 监控报警和权限控制
  15. Centos7安装源地址
  16. 计算机英语200心得体会,学英语的心得体会作文200字作文:学习英语的感受的英语作文(100~120词)...
  17. 【操作系统】进程:管程
  18. python中文词典构建_python-构建英语学习词典
  19. 计算机网络课程设计——中小型网络工程设计
  20. OpenWrt系统下挂载阿里云盘提供webDAV服务再用kodi打造家庭影院

热门文章

  1. android go预览版下载地址,Android 11 Go正式版-Android 11 Go安卓正式版预约 v1.0.0-友情手机站...
  2. zip暴力破解工具Python实现
  3. easyui select 标签事件
  4. Python学习宝典官方推荐 |Python技能树测评
  5. 解决IBM Lenovo x3650M5不开机报错system board fault
  6. word中两端对齐之后文字之间空格很大
  7. java filewriter_Java IO: FileReader和FileWriter
  8. 基于JAVA设备配件管理和设备检修系统计算机毕业设计源码+数据库+lw文档+系统+部署
  9. C语言 二维数组的用法,二维数组方法用法 _C语言-w3school教程
  10. 机器学习SVM算法数字识别器