Javascript 在位于二次曲线上的两点之间找到控制点

Javascript 在位于二次曲线上的两点之间找到控制点,javascript,math,canvas,curve,quadratic,Javascript,Math,Canvas,Curve,Quadratic,我在两点之间画一条二次曲线,然后在曲线上找到一个随机点。我想突出显示随机点和端点之间的曲线部分 所以我想在随机点和端点之间找到另一个控制点,然后在原始曲线的顶部绘制另一条具有不同笔划颜色的二次曲线 有没有可能找到这一点?或者有没有其他方法来完成这项任务 下面是我正在编写的一段代码: var startpoint = {x: 50, y: 50}; // Red var endpoint = {x: 50, y: 250}; // Green var controlpoint = {x: 100

我在两点之间画一条二次曲线,然后在曲线上找到一个随机点。我想突出显示随机点和端点之间的曲线部分

所以我想在随机点和端点之间找到另一个控制点,然后在原始曲线的顶部绘制另一条具有不同笔划颜色的二次曲线

有没有可能找到这一点?或者有没有其他方法来完成这项任务

下面是我正在编写的一段代码:

var startpoint = {x: 50, y: 50}; // Red
var endpoint = {x: 50, y: 250}; // Green
var controlpoint = {x: 100, y: 150}; // Blue

var t = 0.75;
var randompoint = {
    x: (1 - t) * (1 - t) * startpoint.x + 2 * (1 - t) * t * controlpoint.x + t * t * endpoint.x, 
    y: (1 - t) * (1 - t) * startpoint.y + 2 * (1 - t) * t * controlpoint.y + t * t * endpoint.y
}; // Orange


context.beginPath();
context.moveTo(startpoint.x, startpoint.y);
context.quadraticCurveTo(controlpoint.x, controlpoint.y, endpoint.x, endpoint.y);
context.stroke();
下面是工作代码,下面是答案


解决方案是沿垂直于固化的方向在随机点和端点之间移动的曲线副本。要找到方向,可以找到从随机点和端点经过的线,并找到与该线垂直的线。因此,在垂直方向上移动曲线副本作为高亮灯。

是的,您可以使用简单的方法为此新曲线创建新的控制点:

   P1' = P0 * (1-t) + P1 *  t
其中P0是起点,P1是旧曲线的控制点,P1'是新曲线的控制点


(这是一般贝塞尔曲线细分问题的特殊情况)

如果你能抓住随机点和端点之间曲线上的一个点,那么你可以在这里使用数学;是的,我让它工作了,并且更新了原来的帖子,在你的答案后面加入了工作代码。非常感谢你。
   P1' = P0 * (1-t) + P1 *  t