如何控制动画的速度,用贝塞尔曲线?(how to control the speed of anim

2019-10-21 07:23发布

我发现式只为三次曲线的矢量坐标谁在绘出了(建立矢量图形)帮助。

这里是:

B(t) = (1-t)^3*P0 + 3*t*(1-t)^2*P1 + 3*t^2*(1-t)*P2 + t^3*P3
  • 多见于: http://www.ams.org/samplings/feature-column/fcarc-bezier#sthash.85XhcT7H.dpuf

此公式返回向量的坐标,但我不知道他们是如何影响动画的速度,在http://cubic-bezier.com/#.17,.67,.83,.67 。

请告诉我怎么去正确的方式,这样我能理解。

Answer 1:

Bezier曲线是从线性空间(通常在间隔的映射<0,1>到非线性空间。 这意味着可以将其用于任何信号/值的形状失真。 你的情况是不会受到影响的时间,但速度(位置的第一导出)

怎么做:

还有,我认为,一个是做了很多的方法:

如果贝塞尔的控制点均匀沿着路径分布,则运动是线性的。 当他们更密集出现的速度慢,反之亦然。 如果您需要更复杂的移动添加多个点/贝塞尔。

另一种选择是让移动线性的,但还不是时候


x(t) = x0 + (x1-x0)*t/t_duration;
x(t)是动画项位置
t是动画时间<0,t_duration>
t_duration的时候需要去边缘位置
x0,x1是开始/结束位置

现在如果你在计时器递增时间线性运动,然后是线性的,如果你这样做,而不是:

u=Bezier(t/t_duration)*t_duration;

并使用u代替t则实现相同的...为了清楚内部贝塞尔是时间转换为范围<0,1>和回后<0,t_duration>

[笔记]

第二个选项(离散非线性时间)带来了新的数学问题整个世界。

但是我用了很多先进的运动控制和刨。 您可以实现有讨厌的事情是在标准时间空间几乎是不可能用非常小的复杂性来代替。 但退的是,在传统的时空简单的东西是很难在那里做。



文章来源: how to control the speed of animation, using a Bezier curve?