贝塞尔缓动的速度运动图

问题描述

我正在使用贝塞尔缓动插值在我的应用程序中制作动画。 (像这样:https://developers.google.com/web/fundamentals/design-and-ux/animations/custom-easing

我目前使用带有 4 个控制点(P0、P1、P2、P3)的简单贝塞尔曲线来表示图形,因此在 x 轴上我得到了时间,在 y 轴上我得到了位置(或值) .一切都正常化了。

我现在想改变表示以在 y 轴上具有速度。基本上更接近动态图。我看了很多地方,发现我需要得到我正在使用的三次贝塞尔的导数。

那里提到:https://pomax.github.io/bezierinfo/#derivatives,贝塞尔曲线(特别是三次贝塞尔曲线)的衍生物由其他贝塞尔曲线组成。这对我来说非常适合绘制它们。但是,我找不到计算这些贝塞尔控制点的方法。在指定的 t 处获得点始终是一个公式。所以我无法绘制我的图表。

我想得到一个公式,它为我提供了一系列控制点。

我怎样才能做到这一点?谢谢!

解决方法

具有控制点 P0..P3 的三次贝塞尔曲线的导数是具有控制点的二次贝塞尔曲线:

D0 = 3*(P1-P0)
D1 = 3*(P2-P1)
D2 = 3*(P3-P2)

也许你想在任何地方使用三次曲线 - 在这种情况下制作“功率提升”:

PD0 = D0 = 3*(P1-P0)
PD1 = D0/3 + 2*D1/3 = (P1-P0) + 2*(P2-P1) = 2*P2 - P1 - P0
PD2 = 2*D1/3 + D2/3 = 2*(P2-P1) + (P3-P2) = P2 - 2*P1 + P3
PD3 = D2 = 3*(P3-P2)