javascript - 无需猜测或蛮力即可获得贝塞尔曲线上的点

标签 javascript html5-canvas bezier

我最初想使用四个点(因为贝塞尔曲线是用 4 个点定义的),但这迫使我强制定位位置,所以我尝试了一种不同的方法,我现在需要帮助:

我有一个起点 P0、一个终点 P1 以及斜率 m0 和 m1,它们应该为我提供起始/结束斜率来计算它们之间的贝塞尔曲线。
曲线应该是函数的形式(第三次),因为我需要获取给定点 x 的高度 y。

使用HTML5Canvas我可以毫无问题地绘制贝塞尔曲线并使用此功能

enter image description here

这允许我计算任何给定的点,给定我可以获得曲线中心点的方式的百分比。但我不需要它取决于 t,而是需要 y 取决于 x,所以不是曲线的一半,而是 P0 和 P1 之间 x 距离的一半。

可视化图像:
enter image description here
左边是我可以计算的,右边是我需要的。

我一直在尝试计算给定两个点 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/

相关文章:

javascript - crypto-js aes 无法解密它加密的内容

javascript - 全日历添加事件

angular - 下载为 PDF 时 Canvas 图表模糊

animation - 为在 drawRect() Swift 中绘制的贝塞尔曲线路径设置动画

language-agnostic - 将二次曲线点转换为多项式表示?

javascript - 切换 - Jquery 我想每当单击它显示的第一个按钮,然后单击第二个按钮,然后单击第一个按钮的 div 标签隐藏

javascript - Pagespeed 洞察报告分析

javascript - Fabric.JS 和 Fabric-Brush - 无法添加到下部 Canvas

javascript - 在 KineticJS 中使用 mousedown 事件创建一个矩形

algorithm - 如何在最接近任意点 p 的 (x, y) 坐标的闭合二维复合贝塞尔曲线上找到点 q 的 (x, y) 坐标?