我最初想使用四个点(因为贝塞尔曲线是用 4 个点定义的),但这迫使我强制定位位置,所以我尝试了一种不同的方法,我现在需要帮助:
我有一个起点 P0、一个终点 P1 以及斜率 m0 和 m1,它们应该为我提供起始/结束斜率来计算它们之间的贝塞尔曲线。
曲线应该是函数的形式(第三次),因为我需要获取给定点 x 的高度 y。
使用HTML5Canvas我可以毫无问题地绘制贝塞尔曲线并使用此功能
这允许我计算任何给定的点,给定我可以获得曲线中心点的方式的百分比。但我不需要它取决于 t,而是需要 y 取决于 x,所以不是曲线的一半,而是 P0 和 P1 之间 x 距离的一半。
我一直在尝试计算给定两个点 P0、P1 以及斜率 m0、m1 的三次函数,这会产生四个方程,我似乎无法仅使用变量输入来求解这些方程。我还尝试使用上述函数使用 x 值(已知)来计算 t,但也没有骰子。
我需要避免在这些计算中使用近似值或昂贵的循环,因为它们对许多对象每秒执行多次,因此 this answer对我来说不可行。
感谢任何帮助。
最佳答案
我在做的一个项目中也遇到了同样的问题。我不知道从 x
获取 y
坐标的公式,我怀疑您在这条路线上会遇到麻烦,因为贝塞尔曲线最多可以有3 个点都具有相同的 x 值。
我建议使用 BezierEasing 库,它是为此用例设计的,并使用各种性能增强技术来尽可能快地进行查找:https://github.com/gre/bezier-easing
关于javascript - 无需猜测或蛮力即可获得贝塞尔曲线上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501687/