Canvas 贝塞尔曲线控制点投影

Canvas 贝塞尔曲线控制点投影,canvas,curve,bezier,Canvas,Curve,Bezier,我用的是方形贝塞尔曲线。对于绘图,我使用html5画布。我做了一个简单的函数,显示了2个控制点,我可以很容易地修改曲线,只要拖动控制点。我做了一些像 在我的示例中,我展示了2个控制点,用户可以拖动它们。但我想在曲线上显示一些点,所以我想找到控制点在曲线上的投影,用户可以在曲线上拖动这些伪点,函数会改变原始控制点的位置 如何在曲线上创建1到1个项目控制点 首先:cubic-bezier.com网站显示的是立方曲线,而不是方曲线(实际上称为二次曲线) 关于你如何投射一个控制点:你用暴力强迫它。我将详

我用的是方形贝塞尔曲线。对于绘图,我使用html5画布。我做了一个简单的函数,显示了2个控制点,我可以很容易地修改曲线,只要拖动控制点。我做了一些像

在我的示例中,我展示了2个控制点,用户可以拖动它们。但我想在曲线上显示一些点,所以我想找到控制点在曲线上的投影,用户可以在曲线上拖动这些伪点,函数会改变原始控制点的位置


如何在曲线上创建1到1个项目控制点

首先:cubic-bezier.com网站显示的是立方曲线,而不是方曲线(实际上称为二次曲线)

关于你如何投射一个控制点:你用暴力强迫它。我将详细介绍,但要点是,您只需沿着曲线增加
t
值,直到找到离曲线点的最短距离

但这并不是你真正想要的,听起来像是。您询问的是如何基于曲线上的拖动点更改曲线形状,实际上,这与将控制点投影到曲线上无关。通过拖动曲线上的点来操纵曲线要比投影的工作量大得多;完全可行,如上所述(如果您想自己实现此功能,需要阅读之前的部分),但要复杂得多

显然,这里真正的解决方案是不要自己编写代码。使用一个已经为您完成所有这些的库,不要浪费时间重新发明轮子,集中精力使用其他人已经制作的轮子,使您的站点用户体验更好。

请澄清…:-)“方形贝塞尔”是指二次贝塞尔吗?是否要根据鼠标位置计算中间控制点?