首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cubic-bezier,如何得到x的y?

cubic-bezier,如何得到x的y?
EN

Stack Overflow用户
提问于 2013-01-23 01:53:30
回答 1查看 714关注 0票数 2

我的三次贝塞尔函数由[0.1,0.8,0.2,1] where [x1,y1,x2,y2]定义。

我在1200ms的时间内旋转元素720度。如何计算每60度的t?也就是说,当对象已经变成60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720度时,我需要触发JavaScript事件。

如果我没记错的话,我需要得到每个x的值,其中y是(60/720), (60/720)*2, (60/720)*3, (60/720)*4, (60/720)*5, (60/720)*6, (60/720)*7, (60/720)*8, (60/720)*9, (60/720)*10, (60/720)*11, (60/720)*12,然后乘以x*duration (1200ms)。

我已经研究了http://blog.greweb.fr/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation/https://github.com/arian/cubic-bezier实现。

如果到目前为止一切都是正确的,我如何获得y的x值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 05:40:01

首先,您拥有的不是Bezier样条线,而是easing curve:三次Bezier样条线的特例,起点在(0.0,0.0),终点在(1.0,1.0),用于生成动画。

如果使用相等的时间间隔而不是相等的角度旋转间隔,则动画看起来会更好。t本质上是一个时间参数,因此曲线由下式给出

代码语言:javascript
复制
y(t) = 3*(1-t)^2*t*y1 + 3*(1-t)*t^2*y2 + t^3.

其中,t属于区间[0.0,1.0]

那么实际的角度将是

代码语言:javascript
复制
α(t) = 720 * y(T/1200)
     = 720 * (2.4*(1-T/1200)^2*(T/1200) + 3*(1-T/1200)*(T/1200)^2 + (/1200)^3)

其中T是以毫秒为单位的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14464955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档