解释 - 通过控制点曲线的公式

时间:2012-03-14 21:33:57

标签: math canvas formula bezier quadratic

我有一个关于通过控制点弯曲公式的问题。 如您所知,HTML Canvas有quadraticCurveTo(x1, y1, x2, y2),其中x1 and x2是控制点。

但是,当您尝试使用它绘制笔划时,笔划将永远不会触及控制点。

所以我们有这个公式:

x1 = xt * 2 - (x0 + x2) / 2;
y1 = yt * 2 - (y0 + y2) / 2;

(xt, yt) =你想要弯曲的点。 t为切线,因为它在该点垂直90度。

重新计算控制点位置。

我从一本书中得到了这个公式,但这本书没有解释它是如何衍生出来的。我试过google但是徒劳无功。

任何人都知道如何推导出这个公式?

谢谢, 维恩。

2 个答案:

答案 0 :(得分:3)

二次贝塞尔曲线由等式描述:

x(t) = x0 * (1-t)^2 + 2 * x1 * t * (1 - t) + x2 * t^2(和y(t)类似)。

如果我们应用参数值t = 1/2(在某种程度上 - 曲线的中间),我们将得到你的公式:

x(t=1/2) = xt = x0 * 1/4 + 2 * x1 * 1/4 + x2 * 1/4

然后

x1/2 = xt - (x0 + x2)/4

x1 = 2 * xt - (x0 + x2)/2

答案 1 :(得分:0)

这称为Spline。更重要的是,他们似乎正在使用Bezier Curve